简体   繁体   English

如何使用 JobScheduler 显示 Toast 消息

[英]How to show toast message using JobScheduler

I have been learning jobscheduler in andorid.我一直在学习andorid的jobscheduler。 I have trying to show a toast message in the onstartjob() after every 1minute.我试图在每 1 分钟后在 onstartjob() 中显示一条吐司消息。 But its not showing up.但它没有出现。 Any help will be grateful.任何帮助将不胜感激。

jobschedul_service .class: jobschedul_service .class:

package com.prajwal.jobscheduler;

import android.app.Service;
import android.app.job.JobParameters;
import android.app.job.JobScheduler;
import android.app.job.JobService;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;

public class jobschedul_service extends JobService {

    @Override
    public boolean onStartJob(JobParameters jobParameters) {

        Toast.makeText(getApplicationContext(), "After 15 minutes", Toast.LENGTH_SHORT).show();
        return false;
    }

    @Override
    public boolean onStopJob(JobParameters jobParameters) {
        return true;
    }
}

MainActivity.class: MainActivity.class:

package com.prajwal.jobscheduler;

import androidx.appcompat.app.AppCompatActivity;

import android.app.job.JobInfo;
import android.app.job.JobScheduler;
import android.content.ComponentName;
import android.content.Context;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    private static final int LOAD_ARTWORK_JOB_ID = 1;

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

        JobScheduler jobScheduler =
                (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
        jobScheduler.schedule(new JobInfo.Builder
                (LOAD_ARTWORK_JOB_ID, new ComponentName(this, jobschedul_service.class))
                .setPeriodic(900000)
                .build());
    }
}

Manifest.xml:清单.xml:

  <service
        android:name=".jobschedul_service"
        android:enabled="true"
        android:exported="true"
        android:permission="android.permission.BIND_JOB_SERVICE"></service>

Got the answer!得到了答案!

The reason was the setperiodic(long interval) .原因是setperiodic(long interval)

As per the ss below:根据下面的ss: 在此处输入图片说明

This function was added in API 21 ie Lolipop version.这个函数是在 API 21 ie Lolipop 版本中添加的。 Whereas I was running the app on version > Lolipop.而我在版本 > Lolipop 上运行该应用程序。

Whereas this new function in the image below:而下图中的这个新功能: 在此处输入图片说明

was added in API 24 ie Nougat在 API 24 中添加,即牛轧糖

Hence, if you are targetting your app below Nougat ie < Nougat but >= Lolipop then use setPeriodic(long interval) method whereas if ur targetting >= Nougat then use setPeriodic(long interval, long flexinterval).因此,如果您的目标是低于 Nougat 的应用,即 < Nougat but >= Lolipop 然后使用 setPeriodic(long interval) 方法,而如果您的目标是 >= Nougat,则使用 setPeriodic(long interval, long flexinterval)。

Solution解决方案

 if(Build.VERSION.SDK_INT > Build.VERSION_CODES.N)
        {
            builder.setPeriodic(900000,6000);
        }
        else 
        {
            builder.setPeriodic(900000);
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM