我有一个安卓服务。当用户更改应用程序时,我想执行一些任务。是否有广播或事件,我可以收听。
如果轮询是唯一的解决方案,任何人都可以提出一些好的轮询技术。
谢谢。
我有一个安卓服务。当用户更改应用程序时,我想执行一些任务。是否有广播或事件,我可以收听。
如果轮询是唯一的解决方案,任何人都可以提出一些好的轮询技术。
谢谢。
您可以通过轮询顶级活动来区分应用程序:
private String lastPackageName;
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
// get the info from the currently running task
List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1);
Log.d("topActivity", "CURRENT Activity ::"
+ taskInfo.get(0).topActivity.getClassName());
ComponentName componentInfo = taskInfo.get(0).topActivity;
String packageName = componentInfo.getPackageName();
if(lastPackageName != packageName){
//Probably application changed
}
lastPackageName = packageName;
但这取决于您多久轮询一次该信息。您可以尝试在每次用户按下返回、主页按钮或按下屏幕时轮询此信息。但这显然是太多且糟糕的轮询技术.
似乎这个问题之前已经被问过并且没有得到足够的答案: 当前台(顶部)活动(应用程序)发生变化时如何得到通知
请查看Android 开发者网站中的通知文档。您可以在 Internet 连接更改或设备重启期间或设备关机期间显示通知。