1

我使用作業調度程序,我的主要活動安排一項服務,以在下一次有互聯網連接時啓動。所以當應用程序第一次安裝時,佈局只有一個按鈕,當你點擊它時,它會安排依賴於網絡的服務,然後我想要完成活動(如在佈局中被銷燬,以便用戶獲得他的屏幕)在安裝應用程序之前),所以我有兩個問題:通過作業調度程序安排服務後完成活動?

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()); 
     } 
    }); 
} 

回答

0

1)如果調度服務被破壞活動做的是 意味着該服務仍定或者是失去了什麼?

不,的jobscheduler並不需要你的活動或應用程序,以工作,以保持活着。

2)爲什麼調用方法完成()...完不成活動 ...?

仔細檢查此行爲。請記住,連接的暫停調試器將停止執行並阻止活動完成。 The behavior of this method is a bit nuanced