Android活动生命周期问题
我到底想要什么? 在我的应用程序中,我有4/5个活动和一个与服务器对话的后台线程。我想有一些方法来获得我的应用程序中最活跃的活动。但令人惊讶的是,他们不可能让我得到这些 我做了什么? 搜索了一段时间后,我实现了一个变量Android活动生命周期问题,android,android-activity,Android,Android Activity,我到底想要什么? 在我的应用程序中,我有4/5个活动和一个与服务器对话的后台线程。我想有一些方法来获得我的应用程序中最活跃的活动。但令人惊讶的是,他们不可能让我得到这些 我做了什么? 搜索了一段时间后,我实现了一个变量mcurrentonotopactivity,该变量属于Activity类型,并且在我设置该变量的每个Activity上执行onResume()和onPause()。(这实际上是一种糟糕的方式) 我到达了哪里? 现在,在从服务器接收到一些消息后,我想在UI线程上做一些事情,即显示一
mcurrentonotopactivity
,该变量属于Activity
类型,并且在我设置该变量的每个Activity上执行onResume()
和onPause()
。(这实际上是一种糟糕的方式)
我到达了哪里?
现在,在从服务器接收到一些消息后,我想在UI线程上做一些事情,即显示一些对话框或刷新列表视图
,现在他们无法检查mcurrentonotopactivity
是否引用了实际正在运行的活动(无论出于何种原因,已完成或未聚焦)
我现在想要什么?
现在我基本上需要以下两个问题的帮助:-
IsActicAtLive()(虚构函数)
的东西,它在调用onResume()
和onPause()之间返回true
我在活动中使用一个变量实现了2点,并在
onResume()和onPause()中设置它
。但是,这是唯一的方法吗?您可以使用,这样只有您最上面的活动才能绑定到服务。我目前正在使用您答案中的第二种方法。让我检查一下您第一种方法的效率角度。时不时地查询ActivityManager听起来效率不高,至少对我来说是这样的……任何方法都没有谢谢你的回答。经过一些修改后,我结束了你建议的选项的实施。谢谢!!@Amit:-:)哪一个。?第一种或第二种方法。第二种方法。。因为我发现这真的是可扩展的。。我用这些方法创建了一个活动,我的所有其他活动都扩展了这个活动。到目前为止,我还没有在我的应用程序中使用服务。我需要为此使用它吗?对不起,我以为与服务器对话的后台线程是作为服务实现的,但如果不是,我不建议仅为此实现服务。
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();
}
class MyActivity extends Activity {
static boolean active = false;
@Override
public void onStart() {
super.onStart();
active = true;
}
@Override
public void onStop() {
super.onStop();
active = false;
}
}