为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

缥缈止盈 2019-07-01 15:53:18
Android:我如何获得当前的前台活动(从服务)?是否有本地Android方式从服务中获取当前正在运行的活动的引用?我有一个在后台运行的服务,我想在事件发生时(在服务中)更新我的当前活动。有没有一种简单的方法(就像我上面建议的那样)?
查看完整描述

3 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

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

您可能不拥有“当前正在运行的活动”。

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

  1. 发送广播

    Intent

    参加活动-

    下面是一个示例项目

    演示这种模式
  2. 有活动供给

    PendingIntent

    (例如,VIA

    createPendingResult()

    )服务调用的
  3. 让活动将回调或侦听器对象与服务注册为

    bindService()

    ,并让服务在回调/侦听器对象上调用一个事件方法。
  4. 发送命令广播

    Intent

    以低优先级参加活动

    BroadcastReceiver

    作为备份(以引发

    Notification

    如果活动不在屏幕上)

    这是一篇博文

    有更多关于这种模式的信息


查看完整回答
反对 回复 2019-07-01
?
守候你守候我

TA贡献1802条经验 获得超10个赞

这里有一个使用活动管理器的好方法。您基本上可以从活动经理那里得到runningTask。它将始终首先返回当前活动的任务。从那里你可以得到topActivity。

这里的例子

有一种从ActivityManager服务获取正在运行的任务列表的简单方法。您可以请求在电话上运行的最大任务数,默认情况下,首先返回当前活动的任务。

一旦有了,就可以通过从列表中请求topActivity来获得ComponentName对象。

下面是一个例子。

    ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
    Log.d("topActivity", "CURRENT Activity ::" + taskInfo.get(0).topActivity.getClassName());
    ComponentName componentInfo = taskInfo.get(0).topActivity;
    componentInfo.getPackageName();

您需要在您的清单上获得以下权限:

<uses-permission android:name="android.permission.GET_TASKS"/>


查看完整回答
反对 回复 2019-07-01
  • 3 回答
  • 0 关注
  • 860 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信