通过作业调度程序调度服务后完成活动?

时间:2017-03-07 19:52:09

标签: android android-activity android-5.0-lollipop job-scheduling android-jobscheduler

我正在使用作业调度程序,我的主要活动安排服务在下次有互联网连接时启动。因此,当首次安装应用程序时,布局只有一个按钮,当您单击它时,它会调度网络相关服务,然后我希望活动完成(如在布局中要销毁,以便用户获得屏幕他在应用程序安装之前已经有了)所以我有两个问题:

1)如果安排调度服务的活动是否意味着该服务仍在安排或丢失?

2)为什么在onClick事件结束时调用方法finish()(在安排服务之后)没有完成活动,而是没有任何事情发生,好像finish()甚至不存在?

这是OnCreate代码

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            mJobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);

            JobInfo.Builder builder = new JobInfo.Builder(1,
                new ComponentName(getPackageName(),
                    JobSchedulerService.class.getName()));

            builder.setPersisted(true);

            builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);

            mJobScheduler.schedule(builder.build());
        }
    });
}

1 个答案:

答案 0 :(得分:0)

  

1)如果调度服务的活动被销毁,那么这样做   意味着该服务仍在安排或丢失?

不,JobScheduler不需要你的活动或应用来保持活力才能工作。

  

2)为什么调用方法finish()...没有完成活动   ...?

仔细检查此行为。请记住,附加的暂停调试器将停止执行并阻止活动完成。 The behavior of this method is a bit nuanced