Проблема с планировщиком заданий в Android - PullRequest
0 голосов
/ 06 января 2020

Мой код ниже. Разделено на java файлов. мне положили все относительные разрешения и код. Но я не могу показать вывод в logcat. Я использую Android Studio в качестве IDE и android Studio версии 3.5.3.

Здесь я делаю Executor, который содержит Thread. я просто хочу показывать «Ответ» каждые 5 секунд в logcat.

MJobExecuter

public class MJobExecuter extends AsyncTask<String, String, String> {

    @Override
    protected String doInBackground(String... strings) {
        return "Responce";
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        System.out.println("Response" + s);
    }
}

MJobScheduler

public class MJobScheduler extends JobService {

    private MJobExecuter mJobExecuter = new MJobExecuter();

    @Override
    public boolean onStartJob(final JobParameters params) {

        mJobExecuter = new MJobExecuter(){
            @Override
            protected void onPostExecute(String s) {
                Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
                jobFinished(params,false);
            }
        };

        mJobExecuter.execute();
        return true;
    }

    @Override
    public boolean onStopJob(JobParameters params) {

        mJobExecuter.cancel(true);
        return false;
    }

}

MainActivity

public class MainActivity extends AppCompatActivity {

    private static final int JOB_ID = 1;
    private JobScheduler jobScheduler;
    private JobInfo jobInfo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ComponentName componentName = new ComponentName(this, MJobScheduler.class);
        JobInfo.Builder builder = new JobInfo.Builder(JOB_ID,componentName);
        builder.setPeriodic(5000);
        builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED);
        builder.setPersisted(true);

        jobInfo = builder.build();

        jobScheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);

    }

    public void scheduleJob(View v) {
        jobScheduler.schedule(jobInfo);
        Toast.makeText(this, "Start", Toast.LENGTH_SHORT).show();
    }

    public void cancelJob(View v) {
        jobScheduler.cancel(JOB_ID);
        Toast.makeText(this, "Stop", Toast.LENGTH_SHORT).show();
    }
}

Манифест

разрешение

uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"

сервис

<service 
android:name=".MJobScheduler"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...