Aak*_*ash 3 android android-widget android-appwidget
我想要做的是,一旦AppWidget从用户的Android手机的主屏幕中删除,我想停止更新AppWidget的后台服务.
这是我正在使用的代码...不明白什么是错的?
@Override
public void onDeleted(Context context, int[] appWidgetIds){
Intent serviceIntent = new Intent(context, UpdateService.class);
context.stopService(serviceIntent);
super.onDeleted(context, appWidgetIds);
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢您的帮助.
经过大量的研究,我终于修复了它.我的目标是,如果从屏幕上删除所有AppWidget实例,则停止后台服务.
这就是它做的......
使用共享首选项来切换1和0.当用户将小部件的第一个实例放在屏幕上时,SharePref切换为1.当从屏幕上删除最后一个App小部件实例时,它会切换回0.
@Override服务中的OnReceive方法.倾听这些广播 - AppWidget启用(广播当小部件的第一个实例是把屏幕上),AppWidget禁用(当控件的最后一个实例从屏幕上消失的OS广播)当AppWidget残疾人是广播调用重写方法OnDisabled方法.
3.在@Override OnDisabled方法中调用stopService.工作完美.
记住OnDeleted和OnDisabled之间的区别.当删除窗口小部件的实例时调用OnDeleted,这并不意味着要删除的窗口小部件是最后一个.即使屏幕上有一个小部件实例,我也希望我的服务仍然可以运行.
*此外,如果您不想完成上述所有操作并让Android负责服务等...请使用IntentService.**
| 归档时间: |
|
| 查看次数: |
3227 次 |
| 最近记录: |