1

저는 작업 스케줄러를 사용하고 있으며 다음 주 인터넷 연결이 시작될 때 서비스를 예약합니다. 따라서 앱이 처음 설치되면 레이아웃에는 단 하나의 버튼이 있습니다.이 버튼을 클릭하면 네트워크 종속 서비스를 예약 한 다음 작업이 완료되기를 원합니다. (레이아웃이 파괴되어 사용자가 화면을 가져옵니다. 앱이 설치되기 전에 가지고 있었기 때문에) 나는 그것에 대해 2 가지 질문을 가지고있다 :작업 스케줄러를 통해 서비스를 예약 한 후 작업을 마칩니 까?

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) 왜 finish() 메서드를 호출하면 ... 작업을 완료하지 못합니까? ...?

이 동작을 다시 확인하십시오. 연결된 일시 정지 된 디버거는 실행을 중지하고 작업이 완료되지 않도록합니다. The behavior of this method is a bit nuanced.

관련 문제