【问题标题】:Android: Detect Activity/Application Change Events [duplicate]Android:检测活动/应用程序更改事件[重复]
【发布时间】:2013-07-02 12:37:00
【问题描述】:

我有一个安卓服务。当用户更改应用程序时,我想执行一些任务。是否有广播或事件,我可以收听。

如果轮询是唯一的解决方案,谁能推荐一些好的轮询技术。

谢谢。

【问题讨论】:

  • 你应该打开这个问题以获得赏金。我的答案显然不是一个值得接受的答案,我也很好奇可能的解决方案

标签: android android-activity broadcastreceiver


【解决方案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

【讨论】:

  • “您可以尝试在用户每次按下返回、主页按钮或按下屏幕时轮询此信息”——服务无法检测到任何这些内容。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多