我正在构建一个具有窗口小部件的应用程序,并且窗口小部件中的按钮会启动IntentService。 onHandleIntent()运行一些代码,然后通过处理程序提出一个toast。 单击小部件中的按钮后,我看到吐司,我知道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();
}
}
}
谢谢,Elad。
答案 0 :(得分:2)
但是当我查看后台服务时,我仍然会在那里看到我的应用程序。
服务结束后,您的流程不会自动终止。 Android将保持您的进程运行,直到它需要释放其他应用程序的RAM,以防万一它恰好需要再次从您的应用程序运行。这与Android上的任何其他应用没有什么不同。