ウィジェットとウィジェットのボタンが IntentService を起動するアプリケーションを構築しています。onHandleIntent() はいくつかのコードを実行し、ハンドラーを介してトーストを発生させます。ウィジェットのボタンをクリックすると、トーストが表示され、onHandleIntent が終了したことがわかります。しかし、バックグラウンド サービスを見ると、アプリがまだそこに表示されます。
ユーザーとして、アプリが常にバックグラウンドで実行され、貴重な 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();
}
}
}
ありがとう、エラド。