【问题标题】:Android JobScheduler: JobService with network constraint start even if my device have no network connection.Android JobScheduler:即使我的设备没有网络连接,也会启动具有网络约束的 JobService。
【发布时间】:2016-10-21 15:58:11
【问题描述】:

我尝试在我的应用中实现 JobScheduler,但我遇到了一个我无法理解的问题。

目标是在我的设备上有互联网连接时启动服务,间隔时间为 10 秒。

所以我以这种方式使用 JobScheduler:

    JobScheduler mJobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
    JobInfo.Builder builder = new JobInfo.Builder(1, new ComponentName(getPackageName(),
            MyJobService.class.getName()))
            .setRequiredNetworkType(NETWORK_TYPE_ANY)
            .setPeriodic(10 * 1000);


    if (mJobScheduler.schedule(builder.build()) <= 0) {
        Log.e("gch", "can't Schedule job for MyJobService");
    } else {
        Log.d("gch", "Schedule job for MyJobService");
    }

还有我的 JobService:

public class MyJobService extends android.app.job.JobService {
    public MyJobService() {
    }

    @Override
    public boolean onStartJob(JobParameters jobParameters) {
        Log.d("gch", "onStartJob");
        return false;
    }

    @Override
    public boolean onStopJob(JobParameters jobParameters) {
        Log.d("gch", "onStartonStopJob");
        return true;
    }

}

当然我加了android:permission="android.permission.BIND_JOB_SERVICE"

如果我理解正确,我的 JobService 应该只在我的设备有网络的情况下执行,并且最多在 10 秒内执行一次。

但是,在我的设备上,我没有互联网连接(没有插入 SIM 卡,也无法连接 WIFI)但我的工作每 10 秒执行一次。 似乎 NETWORK_TYPE_ANY 被忽略了。 NETWORK_TYPE_UNMETERED 也有同样的问题。

有人已经面临这个问题了吗?

非常感谢。

【问题讨论】:

标签: android android-jobscheduler


【解决方案1】:

看看这个线程: Jobscheduler API android L

还有这个错误报告: https://code.google.com/p/android/issues/detail?id=81265

该时间被视为截止日期,当达到此截止日期时,尽管您的其他限制未得到满足,作业仍将触发。不知道是bug还是功能。

【讨论】:

    猜你喜欢
    • 2011-08-15
    • 1970-01-01
    • 2017-03-17
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 2019-04-28
    • 1970-01-01
    相关资源
    最近更新 更多