猿问

Android:我如何获得当前的前台活动(从服务)?

Android:我如何获得当前的前台活动(从服务)?

是否有本地Android方式从服务中获取当前正在运行的活动的引用?

我有一个在后台运行的服务,我想在事件发生时(在服务中)更新我的当前活动。有没有一种简单的方法(就像我上面建议的那样)?


缥缈止盈
浏览 861回答 3
3回答

青春有我

是否有本地Android方式从服务中获取当前正在运行的活动的引用?您可能不拥有“当前正在运行的活动”。我有一个在后台运行的服务,我想在事件发生时(在服务中)更新我的当前活动。有没有一种简单的方法(就像我上面建议的那样)?发送广播Intent参加活动-下面是一个示例项目演示这种模式有活动供给PendingIntent(例如,VIAcreatePendingResult())服务调用的让活动将回调或侦听器对象与服务注册为bindService(),并让服务在回调/侦听器对象上调用一个事件方法。发送命令广播Intent以低优先级参加活动BroadcastReceiver作为备份(以引发Notification如果活动不在屏幕上)这是一篇博文有更多关于这种模式的信息

守候你守候我

这里有一个使用活动管理器的好方法。您基本上可以从活动经理那里得到runningTask。它将始终首先返回当前活动的任务。从那里你可以得到topActivity。这里的例子有一种从ActivityManager服务获取正在运行的任务列表的简单方法。您可以请求在电话上运行的最大任务数,默认情况下,首先返回当前活动的任务。一旦有了,就可以通过从列表中请求topActivity来获得ComponentName对象。下面是一个例子。&nbsp;&nbsp;&nbsp;&nbsp;ActivityManager&nbsp;am&nbsp;=&nbsp;(ActivityManager)&nbsp;this.getSystemService(ACTIVITY_SERVICE); &nbsp;&nbsp;&nbsp;&nbsp;List<ActivityManager.RunningTaskInfo>&nbsp;taskInfo&nbsp;=&nbsp;am.getRunningTasks(1); &nbsp;&nbsp;&nbsp;&nbsp;Log.d("topActivity",&nbsp;"CURRENT&nbsp;Activity&nbsp;::"&nbsp;+&nbsp;taskInfo.get(0).topActivity.getClassName()); &nbsp;&nbsp;&nbsp;&nbsp;ComponentName&nbsp;componentInfo&nbsp;=&nbsp;taskInfo.get(0).topActivity; &nbsp;&nbsp;&nbsp;&nbsp;componentInfo.getPackageName();您需要在您的清单上获得以下权限:<uses-permission&nbsp;android:name="android.permission.GET_TASKS"/>
随时随地看视频慕课网APP

相关分类

Android
我要回答