2011-11-11 42 views

回答

7

我不認爲有任何方式,任何惡意的後臺進程可以在你的應用程序包數據得到的。這是沒有記錄的Android如何處理包數據,這可能會或可能不會在你的應用程序被清除的事件寫入到磁盤,而中背景。不過,由於我們不知道這個數據是否被保存到磁盤上,如果是這樣,鑑於我們沒有線索在哪裏,幾乎證明沒有對磁盤那部分的讀取訪問權限,我不擔心某些第三方進程能夠恢復該數據。

因此我不清楚你怎麼想的曝光。雖然我可能會錯過一些東西。 但是,在回答你的問題時,當你的應用程序處於活動狀態時,它絕對存在於內存中,如果你的應用程序是後端的,它可能或不可能寫在隱藏的地方,但我們不知道,因爲谷歌沒有告訴我們。

當內存被收集時,它與應用程序一起銷燬。

+0

謝謝,這正是我想知道的 – Jleuleu

+2

這是一個不準確的答案。考慮一下應用程序進程被OS自動殺死(而應用程序在後臺),然後用戶回到應用程序,然後OS恢復應用程序(創建一個新進程並恢復活動堆棧)。儘管應用程序進程在一段時間內不存在,但捆綁軟件被提供給恢復的活動,所以它以某種方式存儲在系統中。反過來,系統並不能確定它存儲捆綁包的確切程度,所以理論上它可能會使用文件系統。 –

+1

你也可以查看來自CommonsWare的相關答案:http://stackoverflow.com/a/12468776/247013 –

1

我的猜測是在內存中,但保護數據的最好方法不是信任系統並加密它。永遠不要相信客戶端(在這種情況下,客戶端就是操作系統)。

編輯:

要清楚,我不是說加密包。相反,我的意思是任何敏感數據都不應該放入捆綁包中。如果您要必須將自定義數據放入捆綁包中,然後對其進行加密。

但最終你應該儘可能在客戶端保留儘可能少的敏感數據。這與電子商務網站僅顯示信用卡的最後4位數字的原因相同。

+0

Android使用'onSaveInstanceState' /'onRestoreInstanceState'系統殺死可能需要在未來要恢復(例如,在屏幕旋轉或低存儲器)的活性時堅持每個視圖的UI狀態。如果你真的想加密這些信息(你不需要),那麼你需要自己保存和恢復所有視圖的所有狀態信息。我可以想象沒有應用程序,其中重點是文本字段的名稱是你需要加密... – user113215

+0

我不是說加密捆綁。相反,我的意思是任何敏感數據都不應該放入捆綁包中。如果您必須將自定義數據放入捆綁包中,請將其加密。 – pjco

8

僅存儲用於應用程序生存期數據(即暫時的),使用的onSaveInstanceState(束)的活動事件

此數據將僅在存儲器中,直到應用程序被關閉被保持時,數據將此活動在應用程序當前生命週期內的任何時間都可用。

說明:如果數據是由活性的存儲在這裏則應用示出了不同的活性或旋轉屏幕(因此閉合A),然後返回到A可以被檢索以填充控制數據。但是,如果應用程序關閉並再次打開,數據將消失,控件將恢復爲默認值。使用

例:在用戶和選擇做了一個訂單,博客條目,信息等存儲文本鍵入...

注:

重要的是要注意,只有在活動是很重要的被破壞並重新創建,而不是整個應用程序! Android應用程序可以由許多活動,服務和ContentProviders組成!如果應用程序已關閉(例如通過按「返回」按鈕,則所有值都將不存在).InstallStatState僅用於在活動被銷燬/重新創建時保留數據,而不是應用程序本身。

如果您要永久保存數據,您需要將其保存無論是作爲首選或ContentProvider的/數據庫。

+0

謝謝,我只是想知道數據保存在內存中。 – Jleuleu