gpt4 book ai didi

Android Activity 生命周期问题

转载 作者:行者123 更新时间:2023-11-29 18:04:58 25 4
gpt4 key购买 nike

我真正想要的是什么?

在我的应用程序中,我有 4/5 的 Activity 和一个与服务器通信的后台线程。我想有一些方法来获得我的应用程序最活跃的 Activity 。但令人惊讶的是,我无法得到它们?

我做了什么?

找了一会儿,实现了Activity类型的变量mCurrentOnTopActivity,在onResume()onPause()上 我设置该变量的每个 Activity 。 (这实际上是一种糟糕的方式)。

我到了哪里?

现在他们的情况是,在从服务器接收到一些消息后,我想在 UI 线程上做一些事情,即显示一些对话框或刷新 ListView,现在他们无法检查 code>mCurrentOnTopActivity 指的是实际运行或未运行(无论出于何种原因已完成或不在焦点)的 Activity 。

我现在想要什么?现在我基本上需要帮助解决以下两个问题:-

  1. 我如何知道我的应用程序当前运行最多的 Activity 是哪个?
  2. 我如何知道 Activity 是否仍在运行(即我想要像 isActicitAlive()(虚函数) 这样的东西,它在 onResume() 的调用之间返回 true > 和 onPause() ?

我在 Activity 中使用一个变量实现了 2 点,并在 onResume()onPause() 中设置了它。但是,这是唯一的方法吗?

最佳答案

ArrayList<String> runningactivities = new ArrayList<String>();

ActivityManager activityManager = (ActivityManager)getBaseContext().getSystemService (Context.ACTIVITY_SERVICE);

List<RunningTaskInfo> services = activityManager.getRunningTasks(Integer.MAX_VALUE);

for (int i1 = 0; i1 < services.size(); i1++) {
runningactivities.add(0,services.get(i1).topActivity.toString());
}

if(runningactivities.contains("ComponentInfo{com.app/com.app.main.MyActivity}")==true){
Toast.makeText(getBaseContext(),"Activity is in foreground, active",1000).show();
}

有了这个,您可以检查您正在寻找的 Activity 是否正在运行。

esle,如果你想使用onStart()onStop()方法,你可以使用下面的代码,

class MyActivity extends Activity {
static boolean active = false;

@Override
public void onStart() {
super.onStart();
active = true;
}

@Override
public void onStop() {
super.onStop();
active = false;
}
}

关于Android Activity 生命周期问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13857150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com