2

次のように、クラスコンダクターを使用してすべてのアクティビティを管理します。 ここに画像の説明を入力してください
また、すべてのアクティビティは、共通ビューを使用するように基本アクティビティを拡張します。
この場合、転送アクティビティを処理します。次に例を示します。

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

アクティビティを転送する場合、Conductorはスタック内のすべてのアクティビティを処理する必要があります。
私はこのコンダクターを以下のように書き込もうとしています(スタックの代わりにリストを使用して管理します):

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

しかし、私にはいくつかの問題があります:

  • リストからアクティビティを削除するには、すべてのアクティビティに対してgoBack()を処理する必要があります。
  • アクティビティがリストに存在することを確認します。存在する場合は、そのインスタンスを取得してみてください。

Androidですべてのアクティビティを管理するための最良の方法はありますか?検索を試みましたが、良い答えが見つかりませんでした。
天気かどうか、私のやり方は正しいのだろうか。どんな推薦や例も助けになるでしょう!

4

1 に答える 1

1

これを行う1つの方法があります。すべてのアクティビティの状態を保存する必要があります。そして、それらを思い出す必要があるときは、その状態を使用する必要があります。

追加情報については、こちらをご覧ください:

インスタンス状態の保存を使用してAndroidアクティビティの状態を保存する

于 2012-07-20T09:08:31.817 に答える