我的应用有几项活动。我需要确定它们中哪一个当前处于活动状态(或者无论术语是什么,活动,前景,显示......)。有没有办法做到这一点?
(我认为这是一个简单而常用的东西,但在搜索了一半和一小时之后,我什么也没得到。: - (
(RunningTaskInfo.topActivity()只返回ComponentName,但我需要它的引用,所以这没有帮助。)
(一种强力解决方案是在全局变量中跟踪活动的引用。但这必须在每个onResume()中完成。这是丑陋的IMO。)
答案 0 :(得分:0)
有办法做到这一点吗?
不是。
(一种强力解决方案是在全局变量中跟踪活动的引用。但这必须在每个onResume()中完成。这是丑陋的IMO。)
这也是内存泄漏的一种方法。
就个人而言,我会找到一种更好的方法来解决您认为自己正在通过“当前激活[原创]活动”解决的任何问题。
答案 1 :(得分:0)
我不是一个专家,但我需要像你一样提到保持当前突出显示的按钮突出显示(底栏)。我想我在每个活动中都使用onResume()来提及将它存储在应用程序类变量中。我确信有更好的方法
编辑:实际上我只是重新阅读你提出的建议...是的我同意commonsware存储实际的活动参考是不好的。为什么不能只存储当前活动名称的字符串变量?这就是我所做的跟踪并突出显示一个合适的按钮
答案 2 :(得分:0)
无论遇到这个问题,即您需要参考当前的活动活动,这里都没有真正的解决方案。唯一的方法是你自己使用全局跟踪它。是的,使用全局实际上并不是Android编程的最佳方式,但我认为它的成本更低。
这是我做的:
扩展我在同一基础活动中的所有活动:MotherOfAllActivities。
public class MotherOfAllActivities extends Activity {
public void onCreate(...) {
globalCurrentActivity = this;
........
}
public void onResume() {
globalCurrentActivity = this;
........
}
public void onPause() {
if (globalCurrentActivity == this)
globalCurrentActivity = null;
}
// And, don't forget about onActivityResult(). It can come before onResume()
// of the calling activity and after onPause() of the called activity. That is,
// there is a window when globalCurrentActivity is null.
public void onActivityResult() {
globalCurrentActivity = this;
}
}
如果你不喜欢这个答案,请不要开枪。我只想与人们分享对我有用的东西,至少到目前为止。