当前位置: 代码迷 >> Android >> 怎么监听top activity的变化
  详细解决方案

怎么监听top activity的变化

热度:81   发布时间:2016-05-01 12:34:52.0
如何监听top activity的变化?
目前知道的是,通过
ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
可以得到正在运行的顶层Task,然后tasks.get(0).topActivity就是运行在手机顶层的Activity了。
但这是一种主动型的方式。
我想知道的是,有没有一种注册监听器的方式,能被动接收到topActivity变化的通知?
以便在后台服务里能随时知道当前用户正在干什么,且不消耗太多的资源。如果用线程sleep加以上方法,感觉间隔太短的话,太耗资源,间隔太长,又有可能漏掉某个activity。
请高手赐教!

------解决方案--------------------
顶,没人知道么?
------解决方案--------------------
顶啊,高手都去哪里了?
------解决方案--------------------
没见过这样的方法,帮顶表示关注。
------解决方案--------------------
想要被动接收,只有在其他activity的不同生命周期添加广播。你这里只要注册广播接收就行了。这个广播不限于自己的apk,同样可以接收到别人的apk发的广播。关键是要知道广播是什么。
了解一下广播机制吧。
------解决方案--------------------
引用:
想要被动接收,只有在其他activity的不同生命周期添加广播。你这里只要注册广播接收就行了。这个广播不限于自己的apk,同样可以接收到别人的apk发的广播。关键是要知道广播是什么。
了解一下广播机制吧。

大哥,我的问题是想知道android里有没有被动接收到top Activity changed类似这样的一种消息机制?
------解决方案--------------------
没法监听。...
------解决方案--------------------
引用:
没法监听。...

唉,好吧,那就改framework源代码了。
------解决方案--------------------
引用:
引用:没法监听。...
唉,好吧,那就改framework源代码了。
你怎么说改就改啊,你们是做定制手机的?
------解决方案--------------------
引用:
引用:
想要被动接收,只有在其他activity的不同生命周期添加广播。你这里只要注册广播接收就行了。这个广播不限于自己的apk,同样可以接收到别人的apk发的广播。关键是要知道广播是什么。
了解一下广播机制吧。
大哥,我的问题是想知道android里有没有被动接收到top Activity changed类似这样的一种消息机制?


当屏幕被锁时,系统会发送一个广播消息: "android.intent.action.SCREEN_OFF"。
在你的应用中定义一个广播接收(就是你需要的被动接收消息),当收到该广播消息时,处理你想要实现的功能就可以了。
android很多系统事件都会发送广播。

如果想监控到自己应用中activity发送变化,可以在onresume中发送广播消息。当监听到该消息时做处理。
具体广播机制的实现在网上搜一下就明白了。
------解决方案--------------------
引用:
引用:引用:
想要被动接收,只有在其他activity的不同生命周期添加广播。你这里只要注册广播接收就行了。这个广播不限于自己的apk,同样可以接收到别人的apk发的广播。关键是要知道广播是什么。
了解一下广播机制吧。
大哥,我的问题是想知道android里有没有被动接收到top Activi……
要是我按了home键,再打开其他app呢。。
------解决方案--------------------
home键可以有按键事件可以处理,但是打开其他app监听不到了,只有其他app中发送了广播,并且和你的app有接口协议才可以。
你可以在android所有的系统广播消息中找找看
  相关解决方案