2017-03-09 116 views
1

我正在學習Android活動生命週期我對某些主題很困惑。我發現,即使在這個論壇上,文檔/書籍也與其他文檔/書籍相反。哪裏保存應用程序或用戶數據? onPause()or onStop()

例如,我買了書指出:」 onPause() ... 步驟應該在此方法中採取以存儲活動所需的任何持久性數據(如存儲到內容提供商,數據庫或文件數據) ...

另一方面,android official guidelines狀態「onPause()執行非常簡短,並不一定提供足夠的時間來執行保存操作。 因此,您不應該使用onPause()來保存應用程序或用戶數據,進行網絡調用或執行數據庫事務;在方法完成之前,這樣的工作可能無法完成。相反,應的onStop期間執行高負載的關機操作()

但是,我們知道,onStop()是不是肯定會被稱爲每次!!!

誰是正確的?

謝謝你在前進。

+0

的東西,官方文件說,你不應該在的onPause做,你不應該做他們的UI線程無論如何,你應該保持所有生命週期方法的執行時間快 – lelloman

+0

你有幾乎相同的問題[這裏](http://stackoverflow.com/questions/29480890/when-to-save-data-to-database-onpause- or-onstop):) – w00ly

+0

可能的重複[何時將數據保存到數據庫,onPause()或onStop()?](http://stackoverflow.com/questions/29480890/when-to-save-data-to- database-onpause-on-onstop) – w00ly

回答

1

還是做你的儲蓄,其控制標記的方法中。 如。

public void method(){ 
    if (!done){ 
    [...] savings 
    } 
    done = true; 
} 

並稱之爲onPause()onStop()。所以,如果方法達到最終,做的是真的,所以第二個調用將不會被執行,否則,onStop()將執行你所需要的。

那是我的「解決方案」,我認爲,它可能是錯誤的:)

+0

謝謝你的回答,這是我已經做的,但根據谷歌文檔,我們不應該這樣做!我正在尋找一個官方的谷歌答案,但似乎每個開發人員都必須找到他自己的最佳解決方案! :D Saluti da Roma – MDP

+0

是的,這更多的是個人決定,saluti da Milano:D –

相關問題