我有一个服务,当最顶层的Activity更改时,它的行为必须改变.比如,活动A处于活动状态,然后服务开始某种处理.当活动A不再可见时,此处理必须停止:用户按下"返回","主页"或执行任何使活动A不可见的操作.此活动A必须不知道该服务 - 即它必须不必明确告知服务它正在消失.
简而言之,有没有办法:
PS这可能听起来像恶意软件行为,但事实并非如此!这是合法的用例!
编辑:活动不在我的应用程序中.它们几乎可以是任何东西 - 浏览器,地图应用程序,设置等.
And*_*ang 22
这个顶部已经过时了.见底部的答案.
我假设你指的是你自己的应用程序中的活动:
所有活动onResume()在前往前景和onPause()离开前景时都会呼叫.只需重写此方法与功能(一定要打电话super.onResume(),并super.onPause()分别!).
至于标识符,也许你可以让你的服务有一个静态方法,由一个活动来到前台(in onResume())调用,提供对它自己的引用,它的类,一些任意的ID等.
参考:http://developer.android.com/reference/android/app/Activity.html
编辑:
您可以通过ActivityManager- >运行任务 - > 访问顶级活动的标识ComponentName.务必<uses-permission android:name="android.permission.GET_TASKS" />在清单中声明.
Context context = someArbitraryContext;
ActivityManager am = (ActivityManager) context.
getSystemService(Activity.ACTIVITY_SERVICE);
String packageName = am.getRunningTasks(1).get(0).topActivity.getPackageName();
String className = am.getRunningTasks(1).get(0).topActivity.getClassName();
Run Code Online (Sandbox Code Playgroud)
至于获取通知,您可能只需每x毫秒检查一次顶级活动.
| 归档时间: |
|
| 查看次数: |
12073 次 |
| 最近记录: |