2016-04-29 5 views
-1
  • 活性SingleTask
  • B活性およびCアクティビティ標準、アクティビティはSingleTaskで、タスクのルートです。トップのreStrartアクティビティは破棄されていますか?

    Aである - > B - > C、再度押し、アプリケーションアイコンをホーム押し、なぜB、CはDestoryは?なぜBが最初に破壊されたのか、Cは後で破壊されたのか?

    <activity 
        android:name=".Main1Activity" 
        android:launchMode="singleTask"> 
        <intent-filter> 
         <action android:name="android.intent.action.MAIN" /> 
    
         <category android:name="android.intent.category.LAUNCHER" /> 
        </intent-filter> 
    </activity> 
    <activity android:name="com.example.dell.taskdemo.Main2Activity" /> 
    <activity android:name="com.example.dell.taskdemo.Main3Activity" /> 
    

パブリッククラスMain1ActivityはAppCompatActivity {

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    System.out.println("---1: onCreate " + getTaskId()); 
} 

public void enter(View view) { 
    Intent intent = new Intent(this, Main2Activity.class); 
    startActivity(intent); 
} 

}

パブリッククラスMain2ActivityがAppCompatActivity {

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 
    System.out.println("---2: onCreate " + getTaskId()); 
} 

public void enter(View view) { 
    startActivity(new Intent(this, Main3Activity.class)); 
} 
を拡張を拡張します

}

パブリッククラスMain3Activityはそうあなたが再とき、これまで... AppCompatActivity {短い "singleTask" アクティビティで

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main3); 
    System.out.println("---3: onCreate " + getTaskId()); 

} 

}

+0

あなたは** A **と** B **の活動のコードを追加できますか? – Alexander

+0

コードが掲載されているので、曖昧な回答しか得られません... – sharan

+0

ありがとう!コードが編集されました。結果を説明してください。 –

答えて

1

が他の活動は、そのタスクの一部にすることができます拡張今度はアクティビティb、cがそのタスクの一部であるため、アクティビティaが表示されます。

アクティビティbは、アクティビティcの前に開始されているため、最初に削除されます。

+0

なぜAが表示されますか?なぜCは表​​示されませんか?ありがとう –

+0

@canyifenglin最近のコメントをお詫びします... Aは、次の行のために、アプリケーションのエントリポイントであるため表示されます: sharan

+0

あなたのコメントは私とstaisfidではなく、ありがとう! –

0

マニフェストファイルを確認し、アクティビティBおよびCが「noHistory = true」に設定されていないことを確認します。そうであれば、その行を削除すれば問題は解決します。

アクティビティAとアクティビティAがSingleTaskであるため、アクティビティBとCを破壊しないでください。 SingleTaskアクティビティを持つことは、アクティビティスタックの一番下になければならないことを意味します。つまり、一度だけ存在します。 BとCが正しく設定されていないため、アプリケーションを終了するたびにBとCが終了する場合があります。だから問題はBとCで、Aではなく

+0

私のmainfestファイルは "noHistory = true"に設定されていませんが、singleTaskアクティビティはスタックの一番下にありません。あなたは見てログを印刷しようとします。 –

関連する問題