如何用导体类管理所有活动转移

时间:2012-07-16 04:27:22

标签: android android-activity

我想用类导体管理所有活动,如下所示: enter image description here
同时 所有活动都会扩展基本活动以使用公共视图 在这种情况下,我想处理转移活动,例如:

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

转移活动时,指挥必须处理堆叠中的所有活动 我尝试写下这个指挥如下(我使用list来管理而不是堆栈):

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();
 }
 }

我将此导体存储在Global变量中。然后我用它如下:

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

但我有一些问题:

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

有没有最好的方法来管理Android上的所有活动?我试过搜索但没有找到好的答案。
我不知道天气与否我的方式是对的。任何推荐或示例都会有所帮助!

1 个答案:

答案 0 :(得分:1)

有一种方法可以做到这一点。你必须保存你的所有活动状态。当你需要回忆它们时,你必须使用那种状态。

了解更多信息:

Saving Android Activity state using Save Instance State