gpt4 book ai didi

android - 如何管理指挥类的所有 Activity 转移

转载 作者:行者123 更新时间:2023-11-29 02:03:09 31 4
gpt4 key购买 nike

我想像这样管理类主任的所有 Activity : enter image description here
此外所有 Activity 都扩展基本 Activity 以使用公共(public) View 。
在这种情况下,我想处理传输 Activity ,例如:

 Base -> First -> Second -> Third -> First
Base -> First -> Fourth -> Fifth -> Fourth

在传输 Activity 时,Conductor 必须处理堆栈中的所有 Activity 。
我尝试如下编写此导体(我使用列表而不是堆栈来管理):

public class Conductor {    
private List<Activity> listOfActivityInStack;

public Conductor(){
listOfActivityInStack = new ArrayList<Activity>();
}
public void startActivity(Activity activity, Class<?> cls){
listOfActivityInStack.add(activity);
Intent i = new Intent(activity.getApplicationContext(), cls);
activity.startActivity(i);
}

public void startActivityForResult(Activity activity, Class<?> cls, int requestCode){
listOfActivityInStack.add(activity);
Intent i = new Intent(activity.getApplicationContext(), cls);
activity.startActivityForResult(i, requestCode);
}

public void startAcitivtyClearPrevious(Activity activity, Class<?> cls){
listOfActivityInStack.clear();
listOfActivityInStack.add(activity);
Intent i = new Intent(activity.getApplicationContext(), cls);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
activity.startActivity(i);
}

public int getCount(){
if(listOfActivityInStack == null)
return 0;
return listOfActivityInStack.size();
}
}

我将这个导体存储在全局变量中。然后我按如下方式使用它:

  //Get conductor from application global
conductor.startActivity(FirstActivity.this, SecondActivity.class);
//Then add conductor to application global

但是我有一些问题:

  • 我必须为所有 Activity 处理 goBack() 以从列表中删除 Activity 。
  • 检查 Activity 是否存在于列表中,如果存在,则尝试获取其实例。

有没有最好的方法来管理 android 上的所有 Activity ?我试过搜索,但没有找到好的答案。
我想知道天气是否正确,我的方法是否正确。任何建议或示例都会有所帮助!

最佳答案

有一种方法可以做到这一点。您必须保存所有 Activity 状态。当你需要记忆它们时,你必须使用那个状态。

更多信息看这里:

Saving Android Activity state using Save Instance State

关于android - 如何管理指挥类的所有 Activity 转移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11498085/

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