Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JobScheduler显示toast消息_Java_Android_Service_Android Jobscheduler - Fatal编程技术网

Java 如何使用JobScheduler显示toast消息

Java 如何使用JobScheduler显示toast消息,java,android,service,android-jobscheduler,Java,Android,Service,Android Jobscheduler,我一直在安道尔学习作业调度器。我尝试在onstartjob()中每隔1分钟显示一条祝酒词。但它没有出现。任何帮助都将不胜感激 作业计划服务。类别: package com.prajwal.jobscheduler; import android.app.Service; import android.app.job.JobParameters; import android.app.job.JobScheduler; import android.app.job.JobService; imp

我一直在安道尔学习作业调度器。我尝试在onstartjob()中每隔1分钟显示一条祝酒词。但它没有出现。任何帮助都将不胜感激

作业计划服务。类别:

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;
    }
}
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());
    }
}
  <service
        android:name=".jobschedul_service"
        android:enabled="true"
        android:exported="true"
        android:permission="android.permission.BIND_JOB_SERVICE"></service>
MainActivity.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;
    }
}
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());
    }
}
  <service
        android:name=".jobschedul_service"
        android:enabled="true"
        android:exported="true"
        android:permission="android.permission.BIND_JOB_SERVICE"></service>
Manifest.xml:

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;
    }
}
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());
    }
}
  <service
        android:name=".jobschedul_service"
        android:enabled="true"
        android:exported="true"
        android:permission="android.permission.BIND_JOB_SERVICE"></service>

找到答案了

原因是设置周期(长间隔)

根据以下标准:

此函数是在API 21即Lolipop版本中添加的。而我在version>Lolipop上运行应用程序

鉴于下图中的新功能:

API 24中添加了牛轧糖

因此,如果您将应用程序定位在牛轧糖以下,即=Lolipop,则使用setPeriodic(长间隔)方法,而如果您将应用程序定位>=Nougat,则使用setPeriodic(长间隔,长弹性间隔)

解决方案

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

找到答案了

原因是设置周期(长间隔)

根据以下标准:

此函数是在API 21即Lolipop版本中添加的。而我在version>Lolipop上运行应用程序

鉴于下图中的新功能:

API 24中添加了牛轧糖

因此,如果您将应用程序定位在牛轧糖以下,即=Lolipop,则使用setPeriodic(长间隔)方法,而如果您将应用程序定位>=Nougat,则使用setPeriodic(长间隔,长弹性间隔)

解决方案

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

我想你已经在这两者之间徘徊了,但实施工作仍在继续。查看链接:获取完整的指导。仍然没有工作。没有重复间隔工作,否则?我看不到吐司味精本身。我还在onstartjob()中的值上添加了断点,但断点本身不会被执行/捕获。可以看出,它从不调用服务类。这是因为我正在运行MainAct的oncreate()中的代码吗?我想您已经陷入了这两者之间,而实现仍然存在。查看链接:获取完整的指导。仍然没有工作。没有重复间隔工作,否则?我看不到吐司味精本身。我还在onstartjob()中的值上添加了断点,但断点本身不会被执行/捕获。可以看出,它从不调用服务类。这是因为我在MainAct的oncreate()中运行代码吗??