Как вставить текущее время в базу данных sqllite каждые 5 минут в фоновом режиме, даже если мы очистим недавнее задание, оно будет работать в фоновом режиме и будет вставлять текущее время каждые 5 минут ...
Я пробовал фоновый сервис используя график работы, но код не работает.
, пожалуйста, дайте решение. когда я совершил ошибку.
активность_основ. ExampleJobService. java
package com.example.demon;
import android.app.job.JobParameters;
import android.app.job.JobService;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class ExampleJobService extends JobService {
private static final String TAG="ExampleJobService";
private boolean jobcancelled=false;
@Override
public boolean onStartJob(JobParameters params) {
Log.d(TAG,"Job Started");
doBackgroundWork(params);
return true;
}
private void doBackgroundWork(final JobParameters params)
{
new Thread(new Runnable() {
@Override
public void run() {
for (int i=0;i<10;i++)
{
test(null);
Log.d(TAG,"run: "+ i);
if(jobcancelled)
{
return;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Log.d(TAG,"Job finished ");
jobFinished(params, true);
}
}).start();
}
public void test(View view)
{
database db=new database(this);
String ct=new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());
String msg=db.addRecords(ct);
Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
}
@Override
public boolean onStopJob(JobParameters params) {
Log.d(TAG,"Job cancelled before completion");
jobcancelled=true;
return true;
}
}
String delRecords()
{
SQLiteDatabase db=this.getWritableDatabase();
int res=db.delete("timetable",null,null);
return "Deleted";
}
}
MainActivity. java
package com.example.demon;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.app.job.JobInfo;
import android.app.job.JobScheduler;
import android.content.ComponentName;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private static final String TAG ="MainActivity";
Button viewbtn;
database db=new database(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void schedulejob(View view)
{
ComponentName componentName=new ComponentName(this,ExampleJobService.class);
JobInfo jobInfo=new JobInfo.Builder(159,componentName)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
.setPeriodic(15*60*1000)
.build();
JobScheduler scheduler= (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
int resultCode=scheduler.schedule(jobInfo);
if(resultCode==JobScheduler.RESULT_SUCCESS)
{
Log.d(TAG,"Job Scheduled");
}
else
{
Log.d(TAG,"Job Scheduled failed");
}
}
public void canceljob(View view)
{
JobScheduler scheduler= (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
scheduler.cancel(159);
Log.d(TAG,"Job cancelled");
}
public void showAllRec(View view)
{
Cursor res=db.getAlldata();
StringBuffer buffer=new StringBuffer();
while (res.moveToNext())
{
buffer.append("id :"+res.getString(0)+" ");
buffer.append("time :"+res.getString(1)+"\n");
}
showmsg("Data",buffer.toString());
}
public void showmsg(String title,String message)
{
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(message);
builder.show();
}
public void delAllRec(View view)
{
String msg2=db.delRecords();
Toast.makeText(this,msg2,Toast.LENGTH_SHORT).show();
}
}