2016-04-29 49 views
-1
  • A活動是SingleTask
  • B活動和C活性的標準,活動是SingleTask並且是任務的根源,頂級的reStrart活動是否已被刪除?

    A - >乙 - > C,然後按Home鍵,再按下應用程序圖標,爲什麼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 {

@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

謝謝!有代碼編輯,請解釋結果?爲什麼顯示A? –

回答

1
簡稱 「singleTask」

活動允許的其他活動是其工作的一部分......所以,當你過重 - 再次打開應用程序,顯示活動a,因爲截至目前活動b,c是其任務的一部分...

活動b首先被刪除,因爲它在活動c之前開始。

+0

?爲什麼不顯示C?謝謝 –

+0

@canyifenglin對已故的評論感到抱歉... A顯示是因爲A是應用程序的入口點,因爲該行: sharan

+0

您的評論是不與我一起staisfid,但謝謝! –

0

檢查您的清單文件並確保活動B和C未設置爲「noHistory = true」。如果他們是,刪除該行,它應該解決您的問題。

活動B和C不應該簡單地因爲活動A是SingleTask而被銷燬。擁有SingleTask活動僅僅意味着它必須位於活動堆棧的底部 - 因此它只存在一次而已。如果B和C每次關閉應用程序時都完成,這是因爲B和C沒有正確設置。所以問題是與B和C,而不是A.

+0

我的mainfest文件沒有設置「noHistory = true」,但singleTask活動不是堆棧的底部。請嘗試打印日誌。 –

相關問題