作业调度 setRequiresDeviceIdle(true) 和 setPeriodic() 不起作用

2024-06-23

我正在开发 10 秒后执行后台任务并检查设备是否空闲的应用程序,但它如何每 10 秒触发一次而不检查设备是否空闲。

MainActivity.java

private static final int JOB_ID = 1;

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

     mJobScheduler = (JobScheduler) getSystemService(this.JOB_SCHEDULER_SERVICE);
     construct_job();
}

private void construct_job(){

     JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, new ComponentName(getPackageName(), MyJobService.class.getName()))
                    .setPeriodic(10000).setRequiresDeviceIdle(true);

    int code = mJobScheduler.schedule(builder.build());

    if( code <= 0 ) {
          //If something goes wrong
          Log.v("SOMETHING", "GOES WRONG");
    }
 }

MyJobService.java

    public class MyJobService extends JobService {
        @Override
        public boolean onStartJob(JobParameters params) {

            Log.v("OnStart", "onStartJob-h");
            //Job Will Be Started Here


            mJobHandler.sendMessage( Message.obtain( mJobHandler, 1, params ) );
            return true;
        }

        @Override
        public boolean onStopJob(JobParameters params) {
            Log.v("JOB","STOPPED");
            mJobHandler.removeMessages( 1 );
            return false;
        }


        private Handler mJobHandler = new Handler(new Handler.Callback() {

            @Override
            public boolean handleMessage( Message msg ) {
                Toast.makeText( getApplicationContext(),
                        "JobService task running", Toast.LENGTH_SHORT )
                        .show();
                jobFinished( (JobParameters) msg.obj, false );
                return true;
            }

        });
}

AndroidManifest.xml

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

有人知道我做错了什么吗?请帮忙?


添加 .setRequirementsEnforced(true) 可能会解决您的问题。

请参阅文档: 可以为作业设置多项要求,但是底层 {@link JobApi} 并不需要考虑所有要求。如果强制执行要求,则会在作业运行之前检查设备状态。如果至少有一项要求未得到满足,则该作业将被重新安排并且不会运行。 ...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

作业调度 setRequiresDeviceIdle(true) 和 setPeriodic() 不起作用 的相关文章

  • 如何使用 Jsoup 仅删除文本中的 html 标签?

    我想使用 JSOUP 从文本中仅删除 html 标签 我使用了这里的解决方案 我之前关于 JSOUP 的问题 https stackoverflow com questions 33466557 jsoup remove only html
  • 以编程方式切换进度条的颜色

    所以我有一个图层列表 其中包含一个具有形状和纯色的项目 现在我想在我的代码中更改这种颜色
  • 如何重写 Lombok Setter 方法

    我在我的项目和生成中使用 lombokSetters and Getters using Setters and GettersPOJO 类之上的注释 我正在尝试覆盖属性的 setters 方法 但它不起作用 我想检查 JSON 属性是 E
  • 获取Java InputStream后面的文件的字节数

    正如标题所示 我需要知道文件在输入流 后面 有多少字节 我不想下载所有字节和计数 需要很长时间 我只需要知道文件有多少字节 像这样 int numberOfBytes countBytes inputStream 所以 我需要 countB
  • 在android中绘制单点触摸运动路径

    我正在尝试制作一个绘图应用程序 我想要绘制单点触摸运动路径在 android 中 就像 Swype 键盘的方式一样 因此我想存储每个像素的 x y 坐标将运动路径转化为数据结构 我如何使用 MotionEvent 指针来执行此操作 您可能不
  • Java中无法到达的语句编译错误[重复]

    这个问题在这里已经有答案了 class For1 public static void main String args int a 0 for break System out println a Line 1 a Line 2 我知道第
  • 如何让 Meteor Cordova 应用程序允许访问域

    我刚刚做了流星更新 现在有版本 流星1 0 4 科尔多瓦4 2 0 我最近还使用 mup deploy 将我的服务器移动到数字海洋 我现在发现 虽然桌面和移动网站运行良好 但在 Android 移动应用程序中 图像不再加载 这些图像是公共
  • 使用 Jackson 从 JSON 文件中删除空元素

    我正在尝试从 JSON 文件中删除一个元素 Lorem Ipsum 4 Lorem Ipsum 5 keyToRemove value 使用以下代码 我可以删除键和值 for JsonNode personNode rootNode if
  • java代码中的问号

    有人能解释一下下面代码中的问号吗 INITIAL PERMANCE 也是代码中的静态最终常量 但是语法的最后一行被称为什么 Synapse AbstractCell inputSource float permanence inputSou
  • Android:如何使用“uses-library”?

    我的Android应用程序可以分为客户端UI层和API层 我想将它们部署为单独的 应用程序 以便可以重用 API 层 在 Eclipse 中 我将它们编写为 2 个独立的 Android 项目 在客户端 UI 项目中 我在其构建路径中声明
  • 如何在 JPA/Hibernate 中找出实体是否分离?

    有没有办法查询JPA实体管理器给定实体是否分离 这个帖子 https stackoverflow com questions 2779857 how to know if a detached jpa entity has already
  • Progruard 和 R8 已弃用 - Android Studio 3.6

    将 Android Studio 升级到 3 6 后 我收到了有关 Proguard 和 R8 的弃用警告 这是否意味着我们不应该在项目中使用混淆 或者在发布模式下构建时我们应该考虑另一个等效选项 选项 android enableR8 已
  • 按下 JButton 时运行函数

    我正在尝试用java编写一个程序 使用机器人每隔几秒按一次特定的键 它有一个带有开始和停止按钮的 GUI 以及一个告诉其处于哪个状态的标签 到目前为止 我已经完成了所有工作 除了当我单击 开始 时 它运行我的机器人功能的循环 这是无限的 没
  • 如何获取已发送短信的送达报告?

    In my Application我正在使用发送短信SMS Manager 要检查消息是否已发送 我正在使用Toast 代替Toast我想要得到SMS Delivery Report我正在尝试很多例子 但是 一个流程不显示递送报告 例如当我
  • 无法解析“:app@debug/compileClasspath”的依赖关系:无法解析

    新安装的安卓工作室3 1 3在创建新项目并第一次编译时出现奇怪的依赖关系错误 一个相似的question https stackoverflow com questions 46949622 android studio 3 0 unabl
  • 当不读取带有 URL 的 QR 码时,zxing QRCodeReader 中出现 ChecksumException

    如果我扫描带有 URL 的 QR 码 以下代码可以完美且快速地运行 然而 如果我用简单的字符串或数字序列解码 QR 码 这就是我想要做的 它有时会随机工作 但 99 的情况下它会失败并出现 ChecksumException if webc
  • Spring Boot数据休息中的日期问题

    当我处理日期时 我遇到了春季数据休息的问题 简而言之 就是推迟一天的日期 例如 如果我有 1111 11 11 它会返回给我 1111 11 10 SO 中有一些相关的帖子 ex1 https stackoverflow com quest
  • Android Fragment 后台事务

    我正在开发一个带有片段的应用程序 它有一个 JavaScript 接口 在主 Activity 中调用 并具有片段替换逻辑 当应用程序位于前台时 一切正常 但当应用程序位于后台时 片段事务替换不起作用 当我返回应用程序时 我仍然看到旧片段
  • @AfterReturning 方面在切入点方法的同一事务中执行?

    我需要在执行函数后执行任务 我为此使用了 Aspect 但我有些困惑 我在 Spring 服务中有一个函数 A Transactional readOnly false isolation Isolation DEFAULT propaga
  • 有人可以推荐 java 8 模式来替换 switch 语句吗?

    我有以下代码 public class A private String type String getType return type 现在在许多代码位置我都有这样的代码 switch a geType case A return new

随机推荐