Android - 动态获取前景中的当前活动

Dyl*_*mes 8 java android get dynamic android-activity

这是情况:

  1. 在线程中,触发事件.
  2. 需要检索当前活动.
  3. 然后在该活动上创建一个对话框并显示.

问题:据我搜索,无法检索前台的当前活动.

额外信息:这需要能够在多个活动中处理.因此,它可以在Activity-A或B或C中弹出.

Prm*_*ths 15

我不确定这是不是你要找的东西,但它看起来很简单.http://iamvijayakumar.blogspot.com/2011/09/get-current-activity-and-package-name.html

  ActivityManager am = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE);
  List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
  ComponentName componentInfo = taskInfo.get(0).topActivity;
  Log.d(WebServiceHelper.TAG, "CURRENT Activity ::" + taskInfo.get(0).topActivity.getClassName()+"   Package Name :  "+componentInfo.getPackageName());
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

  • 应该注意的是,你需要请求`android.permission.GET_TASKS`才能工作. (13认同)
  • 小心,自API 21 Lollipop以来,这已被弃用. (9认同)
  • 这不仅在Android 5中被弃用,而且[http://developer.android.com/reference/android/app/ActivityManager.html#getRunningTasks(int)](文档)暗示它甚至不起作用. (5认同)

Com*_*are 5

计划A:按字面意思提出您的要求

步骤#1:让线程由服务管理

步骤2:让服务在"偶数被触发"时发送消息 - LocalBroadcastManager,Square的Otto,greenrobot的EventBus等.

步骤#3:将每个活动设置为在前景中侦听该消息

步骤#4:让活动在收到消息后显示对话框


B计划:相同的视觉效果

步骤#1:让线程由服务管理

步骤#2:startActivity()以对话为主题的活动进行服务调用

第3步:没有第3步