我有一個應用程序,允許用戶從列表中選擇一個txt文件,然後去互聯網獲取該文件的內容。除非用戶不小心或故意按下硬件返回按鈕以再次查看列表,否則所有操作都可以正常進行。按下後退按鈕時銷燬活動?
現在,當用戶從列表中點擊一個新項目(即一個新文件),而不是加載新文件時,應用程序會繼續從它被掛起的位置繼續。我不希望發生這種情況。我知道這與活動的生命週期有關。
如何確保它加載新文件而不是從停止的地方繼續?
我有一個應用程序,允許用戶從列表中選擇一個txt文件,然後去互聯網獲取該文件的內容。除非用戶不小心或故意按下硬件返回按鈕以再次查看列表,否則所有操作都可以正常進行。按下後退按鈕時銷燬活動?
現在,當用戶從列表中點擊一個新項目(即一個新文件),而不是加載新文件時,應用程序會繼續從它被掛起的位置繼續。我不希望發生這種情況。我知道這與活動的生命週期有關。
如何確保它加載新文件而不是從停止的地方繼續?
我想你是加載文件在onCreate()
。您應該用onResume()
來代替。
不要用力活動,關閉(例如使用finish()
)。首先,this does not guarantee the Activity will be closed,其次,這是最好留給Android來決定。
您可以覆蓋活動中的onBackPressed
方法並調用finish()
以獲得所需的結果。
您只需要通過調用activity.finish()完成onBackPressed()方法中的活動;
'活動#完成()'並不能保證您的活動已關閉。閱讀文檔。 – m0skit0
完成()不會破壞活動 –
殺死活動的另一種方法是通過調用以下方法。
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
事情是,我想要一個全新的文件從互聯網上獲取。這意味着停止執行加載第一個文件的'AsyncTask'。然後,爲第二個文件產生一個新的。 所以,這需要在'onPause'完成,我想,然後在'onStart'開始一個新的'AsyncTask'。這樣我的代碼不會受到干擾。 :) –
然後你應該跟蹤'AsyncTask'獲取舊的文本文件並取消它。 – m0skit0
在哪裏取消之前的'AsyncTask'取決於邏輯。也許導航回這個「活動」的用戶不想要一個新文件,只要看看前一個文件即可。你需要研究有關的案例。 – m0skit0