2017-08-17 106 views
0

我有4項活動。第一個是飛濺活動,第二個是主菜單活動,第三個活動是主要活動的特定選項,第四個是第三個活動的結果。我正在使用noHistory="true"作爲清單文件中的第二個活動。我在所有活動的選項菜單中都有退出選項。一旦我退出應用程序的前三個活動,我打開應用程序意味着它將啓動應用程序(沒有恢復活動),但是當我退出第四個活動時,再次打開應用程序意味着它顯示第三個活動,而不是啓動應用程序。在選項菜單中如何退出所有活動(包括恢復活動)

退出代碼是

flag_activity_clear_top 
flag_activity_no_history 

,但以前的活動不緊密。 我們如何退出所有活動(包括恢復活動)?

如果我使用noHistory="true"屬性進行第三項活動意味着它可以正常工作,但是當我按下主屏幕時,我又重新打開應用程序,它顯示啓動活動而不是恢復活動。所以我避免在第三項活動中使用noHistory屬性。

請給出退出所有活動的解決方案。

+0

當你要下一個活動,只是完成當前活動。 –

+0

感謝您的答覆先生。在任何活動我有退出選項menu.if我退出第三活動意味着沒有問題。它像往常一樣退出,我再次打開應用程序,它從開始就開始。當我們再次從第四個活動退出時,我從啓動器重新打開應用程序,它打開第三個活動(恢復活動)。我想退出所有活動(包括恢復活動) –

回答

0

使用意向

Intent intent = new Intent(getApplicationContext(), FirstActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intent.putExtra("FLAG_ACTIVITY_CLEAR_TOP", true); 
    startActivity(intent); 

在OnCreate中的所有活動

if (getIntent().getBooleanExtra("FLAG_ACTIVITY_CLEAR_TOP", false)) { 
    finish(); 
} 
+0

感謝您的回覆redAllocator.I將檢查並回來,您的先生 –

+0

有一個很好的編碼。 – redAllocator

+0

嗨red allocator.Actually我不會去firstActivity,而不是我從所有的活動退出。一旦我按退出按鈕(我不想去第一個活動),我想退出所有的活動。 –

0

使用sharePreference添加和檢查共享偏好裏面的值(內部的onResume或的OnStart()),每次啓動應用程序和相應導航。

+0

感謝您的答覆的個性balekai.Kindly請發佈使用sharePreference的示例(退出所有活動) –

+0

你可以通過這個鏈接瞭解有關Sharepreference在Android的https://developer.android .com/training/basics/data-storage/shared-preferences.html –

+0

感謝您回覆sonal balekai。 –

0

要關閉所有活動,你可以嘗試撥打

finishAffinity();

這個方法結束當前的活動,以及在具有相同的親和力當前任務立即它下面的所有活動。

finishAffinity()可以從上下文中調用IE(活動,服務等) 如果每次關閉應用程序時要關閉你只需要調用finishAffinity在OnDestroy()方法或活動onClick

@Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     finishAffinity(); 
    } 

finishButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      finishAffinity(); 
     } 
    }); 

而且例如用於menu

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    if (id == R.id.exit_item) { 
     finishAffinity(); 
    } 
    return super.onOptionsItemSelected(item); 
} 

而且您不應該使用任何標誌來啓動或關閉活動,只需撥打finishAffinity()即可退出應用程序並完成所有活動。

在這個視頻中,你可以看到它是如何工作https://youtu.be/L5w8mhB9aNk

+0

感謝您的回覆Vlad Pylyp.I將檢查並回來給您先生 –

+0

而我使用finishAffinity();它顯示一些「錯誤」 –

+0

請發佈示例代碼或參考鏈接使用finishAffinity(); –