2016-07-31 54 views
0

我是新來的android開發的並具有下SQLite的更新表與只讀數據與應用用戶

(我)一定的擔憂在我的應用程序,我使用的SQLite數據庫用戶應該只能夠讀取其中數據(所以我正在運行只讀應用程序代碼中的數據庫查詢) db = openOrCreateDatabase(「PersonDB」,Context.MODE_PRIVATE,null); db.execSQL(SELECT * FROM persons); (ii)要向用戶顯示新數據(例如新聞等),我需要每天更新我的表格,但我不知道如何做到這一點?

PS:我知道如何使用戶通過使用Android應用程序插入數據的代碼,但在這種情況下,只有我想插入數據(不是由應用程序的用戶) 有人可以幫助我一? 謝謝!提前

+0

如果您必須更新所有用戶的數據,請使用Web服務。 –

回答

1

您可以實現一個SyncAdapter以及每天運行的定期同步來更新數據庫。 https://developer.android.com/training/sync-adapters/creating-sync-adapter.html

而且你,如果你可以整合您與谷歌雲消息(或較新的火力點雲消息)支持通知應用檢索新的數據提供 https://developers.google.com/cloud-messaging/android/start

在這兩種情況時,必須要找回來自服務器的數據並更新Service中的數據庫,以便即使應用程序未運行也會發生更新。

UPDATE:

在SyncAdapter的情況下,數據傳送的代碼可以在onPerformSync()方法來實現。至於更新數據庫,SyncAdapter與ContentProvider配合使用,這使得CRUD操作更容易。

因此,在該方法中,您將從網絡中獲取數據,打開數據庫進行寫入並插入/更新新的數據記錄。 SyncAdapter有一個getContext()方法,您可以將其用於任何上下文操作。

你也可以查看我實現的這個應用程序,它有一個SyncAdapter和ContentProvider。 https://github.com/MinaSamy/WeatherApp/blob/master/app/src/main/java/com/bloodstone/weather/sync/WeatherSyncAdapter.java

+0

謝謝!我同意SynsAdapter,但如何更新數據庫? –

+0

您能否告訴我這是什麼意思「您將從網絡獲取數據」 –

+0

這意味着您將從您的Web服務中檢索新數據,如果您沒有Web後端,則可以忽略它 –

相關問題