情况如下:
- 在一个线程中触发了一个事件。
- 需要检索当前的活动(activity)。
- 然后在该活动上创建并显示对话框。
问题: 根据我所查找到的,目前没有办法获取前台活动。
额外信息: 这需要能够在多个活动中处理。因此,它可以在Activity-A、B或C中弹出。
情况如下:
问题: 根据我所查找到的,目前没有办法获取前台活动。
额外信息: 这需要能够在多个活动中处理。因此,它可以在Activity-A、B或C中弹出。
我不确定这是否是你在寻找的内容,但它看起来相当简单明了。 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());
希望这有所帮助。
android.permission.GET_TASKS
权限。 - acrespoLocalBroadcastManager
、Square的Otto、greenrobot的EventBus等。startActivity()
步骤3:没有第三步BaseActivity
,在那里注册似乎是一个好计划。我不知道我是否会仅仅为了两行代码而引入一个公共超类,但如果您已经有这样的超类,请使用它。 - CommonsWareBaseActivity
超类。但是我不确定是否应该将这样的代码放在那里。我创建这样的基类的目的是为了提供所有子类都会使用的通用帮助方法,例如片段事务、资源访问等。我不喜欢在那里放置行为逻辑,因为我很少打开这样的文件。它很容易成为新子类中不需要的功能。这只是我的个人偏好——将行为代码放在眼前。 - Raghubansh ManionPause
中将它们置空,那么你也可以使用静态变量 :) 如果你不能保证这种情况发生,那么无论如何都会出现泄漏。唯一能做的事情(也许应该做的事情)是保持对它们的WeakReference
。它们保证在Activity调用onDestroy
之后才被GC回收。 - zapl使用Facebook的stetho包对我来说是最安全和最简单的方式(而且没有其他团队成员抱怨“这很hacky,我们不会批准!”之类的事情...)
就像这样简单:
ActivityTracker.get().tryGetTopActivity();
就像@Xian Zhang所说的那样,使用Facebook stetho库对我很有效。
ActivityTracker.get().tryGetTopActivity()?.localClassName
ui.YourActivityName
您的应用程序包名称将不会被包含在内