Android:检测活动/应用程序更改事件

时间:2013-07-02 12:37:00

标签: android android-activity broadcastreceiver

我有一个Android服务。我想在用户更改应用程序时执行某项任务。是否有广播或活动,我可以听。

如果轮询是唯一的解决方案,任何人都可以提出一些好的民意调查技巧。

感谢。

2 个答案:

答案 0 :(得分:1)

您可以通过轮询顶级活动来区分应用程序:

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;

但是你需要经常查询这些信息。你可以尝试每次用户按下,主页按钮或按下屏幕时查询这些信息。但显然会过多而且糟糕的民意调查技术。

似乎这个问题之前已经被问到没有得到足够的答案: How to be notified when foreground (top) activity (application) changes

  

来源:https://stackoverflow.com/a/4753333/1276374

答案 1 :(得分:-2)

请检查Android开发者网站中的Notifications document。您可以在Internet连接更改期间或设备重新启动期间或设备关闭期间显示通知。