2012-04-07 29 views
0

我有一個應用程序,記錄一些數據(時間,用戶的GPS位置等)。現在我想實現這一點:當用戶按下後,我彈出一個alertdialog有兩個選項「暫停」或「退出」。我可以重寫onKeyDown方法。現在「退出」應該意味着關閉應用程序並停止數據記錄。 「暫停」應該意味着用戶可以關閉應用程序幾分鐘,然後在從完全相同的點重新打開時繼續。android:暫停(關閉)應用程序,以便它重新打開在相同的狀態

我做了一些研究,但我糊塗了許多要點:

1)我可以保證在某種程度上,該活動被停了下來,不被破壞?此外,finish()會破壞活動。有沒有一些方法暫停編程?

2)如果只有onPause被調用,那麼當應用程序再次打開不應該從onResume開始?所以所有的計數器(我通常在onCreate方法中設置爲零)應該保持最後一個狀態?

3)一種顯而易見的方法是將計數器等的整個狀態保存在設備數據庫中,然後在用戶重新打開時將其恢復。但是這更加痛苦,最重要的是這是一個好習慣?

在此先感謝您的任何澄清!

+0

重複的問題。 http://stackoverflow.com/questions/10047770/is-it-possible-to-save-previous-activity/10047836#comment12855761_10047836 – Kuffs 2012-04-07 11:50:07

回答

2

你不能保證活動永遠不會被破壞,如果系統需要內存,或者它會自動關閉一些應用程序,但是你可以將你的應用程序的狀態保存在變量「savedinstancestate」保存在持久性數據庫或SD中。

如果你想暫停應用程序,你應該調用「onPause」方法,然後調用方法「onResume」,如果你這樣做,你將能夠從最後一個狀態重新啓動你的應用程序。如果你想阻止你的應用程序,只調用該方法「的onStop」

我不是安卓的高手,但我希望這個答案可能會引發你的問題做了

;)

+0

你不打電話onPause或onResume。系統將此作爲活動生命週期的一部分。 http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle – Kuffs 2012-04-07 11:54:09

+1

是的,但你可以重寫,如果你想在該部分做些別的事情,或者我錯了? – Santanor 2012-04-07 11:55:53

+0

但是,由於我重寫了「onkeydown」方法來實現警報對話框,應該如何在用戶選擇要執行的操作後關閉應用程序?我稱之爲finish()方法,我認爲它會破壞活動。如果我不打電話,該應用程序未關閉 – george 2012-04-07 12:06:16

相關問題