2011-10-06 102 views

回答

1

使用onPause()。根據this,onPause()是唯一的方法是保證被調用。後者可能不會被調用onStop()onDestroy()

但是,AFAIK無法告訴爲什麼您的應用程序正在暫停(例如重新安裝)。檢測重新安裝的唯一方法是這樣的:

  1. 使用SharedPreferences來存儲您的應用程序的版本代碼。
  2. 當應用程序啓動時,根據當前版本代碼檢查存儲的版本代碼(後者使用PackageManager)。如果存在差異,請在升級應用程序時執行您需要執行的操作,並覆蓋SharedPreferences中的以前的版本代碼。

另請注意,這需要版本代碼在重新安裝之間碰撞。如果您只是在使用包含相同版本代碼的軟件包adb install -r,則無法分辨。

+0

我正在添加一個標誌,以瞭解我的應用是否會導致onPause。所以我消除了大部分或甚至所有情況 – piojo

+0

這可能不是一個好主意。您的應用也可以通過以下方式進行暫停:電話呼叫,用戶點擊/回家,用戶點擊通知等。 – Felix

0

閱讀生命週期描述 - onDestroy()不保證被調用 - 唯一可靠的回調是onPause() - 所以你必須在那裏做你的事情。

相關問題