AppWidget更新服务不会停止在从主机删除Widget
我想要做的是一旦从用户的Android手机的主屏幕中删除AppWidget,我想停止更新AppWidget的后台服务。AppWidget更新服务不会停止在从主机删除Widget
这是我使用的代码...不明白什么是错的?
@Override
public void onDeleted(Context context, int[] appWidgetIds){
Intent serviceIntent = new Intent(context, UpdateService.class);
context.stopService(serviceIntent);
super.onDeleted(context, appWidgetIds);
}
任何想法?谢谢您的帮助。
了很多研究,我终于修好了之后我开始计时。我的目标是在所有AppWidget实例从屏幕上移除时停止后台服务。
这是谁干的,
用于共享偏好来切换1和0 SharePref切换到1时,小部件的第一个实例是由用户在屏幕上放置。当应用程序窗口小部件的最后一个实例从屏幕上移除时,它会切换回0。
@Override服务中的OnReceive方法。监听这些广播 - AppWidget Enabled(当小部件的第一个实例被放置在屏幕上时广播),AppWidget Disabled(当widget的最后一个实例从屏幕上移除时由操作系统广播) 当AppWidget Disabled时广播调用重写的方法OnDisabled方法。
3.In @Override OnDisabled方法调用stopService。完美的作品。
请记住OnDeleted和OnDisabled之间的区别。 OnDeleted在部件的实例被移除时调用,并不意味着被删除的部件是最后一个。即使屏幕上有一个小部件实例,我也希望我的服务仍能运行。
* 此外,如果你不想做所有上述事情,让Android照顾服务等...使用IntentService。 * *
我认为停止服务在服务本身中调用onDestroy。 它为我用下面的代码在服务
@Override
public void onDestroy() {
super.onDestroy();
timer.cancel();
//Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
定时器IST我在_startService无效
不解决问题...试过了。 – Aakash 2010-12-13 02:07:27
重写onDisabled(上下文上下文)在这方面的帮助? – Aakash 2010-11-03 16:38:36
引发任何异常? – 2010-12-06 12:57:38
@ prateek-jain不会引发异常,但服务也不会停止。 – Aakash 2010-12-06 21:19:57