2012-03-07 171 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(); 
     } 
    } 
} 

謝謝,埃拉德。

回答

2

但是當我在後臺服務看,我仍然看到我的應用程序在那裏。

當服務結束時,您的進程不會自動終止。 Android會保持你的程序運行,直到它需要釋放其他應用程序的RAM,以防萬一它需要再次從你的應用程序運行某些東西。這與Android上的其他應用程序沒有區別。

+0

好的,謝謝澄清! – Elad92 2012-03-07 17:28:13

相關問題