IntentService работает в фоновом режиме даже после завершения onHandleIntent - PullRequest
1 голос
/ 07 марта 2012

Я создаю приложение, в котором есть виджет и кнопка в виджете запускает IntentService.OnHandleIntent () запускает некоторый код и затем поднимает тост через обработчик.После того, как я нажимаю кнопку в виджете, я вижу тост и знаю, что onHandleIntent завершен.Но когда я смотрю в фоновые службы, я все еще вижу там свое приложение.

Как пользователь, я очень раздражаюсь, когда приложения всегда работают в фоновом режиме и тратят драгоценную оперативную память.Мой виджет не должен запускаться в фоновом режиме, потому что мой виджет не обновляется никогда (частота обновления в 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.

1 Ответ

2 голосов
/ 07 марта 2012

Но когда я смотрю в фоновые службы, я все еще вижу там свое приложение.

Ваш процесс не прекращается автоматически при завершении службы. Android будет поддерживать ваш процесс до тех пор, пока ему не понадобится освободить ОЗУ для других приложений, на тот случай, если потребуется снова запустить что-то из вашего приложения. Это ничем не отличается от любого другого приложения на Android.

...