Как создать фоновое задание - PullRequest
0 голосов
/ 29 апреля 2020

Как вставить текущее время в базу данных 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();

    }



}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...