2012-03-07 3 views
1

위젯이있는 응용 프로그램을 빌드 중이며 위젯에 단추가 있으면 IntentService가 시작됩니다. onHandleIntent()는 일부 코드를 실행 한 다음 처리기를 통해 건배를 시작합니다. 위젯의 버튼을 클릭하면 토스트가 표시되고 onHandleIntent가 완료되었음을 알 수 있습니다. 하지만 백그라운드 서비스를 볼 때 나는 여전히 내 앱을 본다.onHandleIntent가 완료된 후에도 IntentService가 백그라운드에서 실행됩니다.

사용자가 앱을 항상 백그라운드에서 실행하고 내 소중한 RAM을 낭비 할 때 매우 짜증이납니다. 내 위젯이 업데이트되지 않기 때문에 내 위젯을 백그라운드에서 실행할 필요가 없습니다 (xml의 업데이트 속도는 0입니다).

그럼 서비스가 아직 실행 중입니까? 어떻게 그걸 막을 수 있니?

IntentService 코드 :

public class WidgetCheckService extends IntentService { 
    private int mAppWidgetId; 
    Handler mHandler = new Handler(); 

    public SalaryWidgetCheckService(String name) { 
     super("laceService"); 
    } 

    public SalaryWidgetCheckService() { 
     super("laceService"); 
    } 

    @Override 
    protected void onHandleIntent(Intent intent) { 
     // Badass code 
      mHandler.post(new DisplayToast(getString(R.string.widget_service_check_in_success_toast_text).replace("LACE", lace))); 
     else mHandler.post(new DisplayToast(getString(R.string.widget_service_check_out_success_toast_text).replace("LACE", lace))); 
    } 

    private class DisplayToast implements Runnable{ 
     String mText; 

     public DisplayToast(String text){ 
      mText = text; 
     } 

     public void run(){ 
      Toast.makeText(WidgetCheckService.this, mText, Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

감사합니다, Elad.

답변

2

하지만 배경 서비스를 볼 때 나는 여전히 내 앱을보고 있습니다.

서비스가 종료되면 프로세스가 자동으로 종료되지 않습니다. Android는 다른 앱의 RAM을 확보해야 할 때까지 프로세스를 계속 실행합니다. 앱에서 다시 실행해야 할 경우를 대비하여. Android의 다른 앱과 다를 바 없습니다.

+0

확인해 주셔서 감사합니다. – Elad92

관련 문제