android-AppWidget更新服务不会在从主机删除小部件上停止
作者:互联网
我想做的是,一旦从用户的Android手机的主屏幕上删除了AppWidget,我想停止更新AppWidget的后台服务.
这是我正在使用的代码…不明白怎么了?
@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(在窗口小部件的第一个实例放置在屏幕上时广播),禁用窗口小部件(在窗口小部件的最后一个实例从屏幕上移除时,由OS广播)
广播AppWidget Disabled时,调用重写的方法OnDisabled方法.
3.在@Override OnDisabled方法中调用stopService.完美的作品.
记住OnDeleted和OnDisabled之间的区别.删除窗口小部件的实例时将调用OnDeleted,这并不意味着要删除的窗口小部件是最后一个.我希望即使屏幕上只有一个窗口小部件实例,我的服务仍然可以运行.
*此外,如果您不想执行上述所有操作,而让Android负责服务等,请使用IntentService. **
标签:android-appwidget,android-widget,android 来源: https://codeday.me/bug/20191023/1915260.html