1

我正在构建一个应用程序,它有一个小部件,小部件中的一个按钮启动一个 IntentService。onHandleIntent() 运行一些代码,然后通过处理程序引发敬酒。单击小部件中的按钮后,我看到了 toast,并且我知道 onHandleIntent 已完成。但是当我查看后台服务时,我仍然在那里看到我的应用程序。

作为用户,当应用程序总是在后台运行并浪费我宝贵的 RAM 时,我会感到非常恼火。我的小部件不需要在后台运行,因为我的小部件永远不会更新(xml 中的更新率为 0)。

那么为什么服务还在运行呢?我怎样才能阻止它?

意向服务代码:

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();
        }
    }
}

谢谢,埃拉德。

4

1 回答 1

3

但是当我查看后台服务时,我仍然在那里看到我的应用程序。

服务结束时,您的进程不会自动终止。Android 将保持您的进程运行,直到它需要为其他应用程序释放 RAM,以防它碰巧需要再次从您的应用程序运行某些东西。这与 Android 上的任何其他应用程序没有什么不同。

于 2012-03-07T16:43:54.267 回答