2012-08-22 3 views
0

라이프 사이클 측면에서 stopService (intent)를 호출하면 서비스의 onDestroy()가 즉시 호출됩니까? 나는 서비스가 생성하는이 스레드를 죽이기 위해 호출 된 onDestroy()를 얻는 데 문제가 있기 때문에 묻습니다.stopService (intent)를 호출 할 때

미리 감사드립니다.

button.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 

      Log.d(Tag, "in button's onClick"); 


      Log.d(Tag, field.getText().toString()); 
      String busNo = field.getText().toString(); 
      field.setText(""); 
      field.setAdapter(clearAdapter); 
      String url = makeURL(busNo); 
      Log.d(Tag, "after makeURL(), url is now "+url); 
      Intent intent = new Intent(JSoupTest9Activity.this, ServiceTest.class); 
      Log.d(Tag, "intent created..."); 
      intent.putExtra("URL", url); 
      Log.d(Tag, "intent's extra put"); 
      Log.d(Tag, "stopping intent service"); 
      stopService(intent); 
      Log.d(Tag, "starting intent service"); 

      startService(intent); 
      Log.d(Tag, "service started"); 

      //pendingIntent = PendingIntent.getService(JSoupTest8Activity.this, 0, intent, 0); 
      //alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 30*1000, pendingIntent); 

     } 
    }); 

당신이 볼 수 있듯이

, 나는 stopService 전화() 새로운 서비스 (새 쿼리 스레드를) 시작 이전 서비스 (쿼리 스레드를) 죽일.

+0

다른 스레드를 생성하는 서비스라고 생각? – Shachillies

+0

코드를 업로드하십시오. – Lucifer

+0

예. onDestroy()는 stopService()가 실행될 때 호출됩니다. – AndroidGuy

답변

2

정적으로 calliong stopService를 사용하는 경우에만 inmediatically 호출됩니다. 액티비티의 lifecycle 다이어그램에서 지적했듯이, VM에 리소스가 필요하면 파괴 될 것입니다.

내가 의심 스러울 때 Log Tool을 사용하여 LogCat에서 출력을 확인하기 만하면됩니다. 이 같은 방법들의 OnDestroy 오버라이드 (override)하는 경우 :

protected void onDestroy() { 
Log.d("event","onDestroy was Called!"); 
super.onDestroy(); 
} 

가 호출 될 때 당신은 자신을 확인할 수 있습니다.

그리고 당신은 배경에서 활동 중 하나를 파괴하려는 경우, 당신은 작업 관리자 사용할 수 있습니다 : 그것은 물론 당신이 매니페스트에 대한 사용 권한을 설정해야합니다 귀하의 응용 프로그램 내에서가 아니라면

ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
activityManager.killBackgroundProcesses("<packagename>"); 

합니다. 제한된 경험으로 나는 어떤 과정을 파괴 할 필요가있는 시간을 찾지 못했습니다. 하지만,

for example 더 확인하지 말해 많은 문서를 발견 할,이 후 질문 was covered already