2012-05-17 67 views
1

我的程序是由一個遠程服務誰在後臺下載每隔1小時從互聯網上的數據和更新數據庫。然後,該服務將提醒用戶預定義的數據。Android:在哪裏存儲我的數據庫:服務或活動?

活動是爲設置的警報設置和其他一些參數。該服務應該能夠在沒有活動的情況下自己工作。

想知道在哪裏把sql數據庫

比方說,我在活動內創建它,我能夠從服務中訪問它嗎? 我應該建立一個AIDL連接,還是直接讀取數據庫(即使活動不起作用)?

建議將不勝感激。

PS:我正在尋找一些簡單的,因爲我仍然在Android的初學者;)

+0

您的服務是否需要從活動中獲取一些信息?或者你想訪問數據庫的活動? – R4j

回答

1

正如@black crow提到的,如果您在同一個進程中有Activity和Service,那麼創建數據庫的位置並不重要。如果它們是單獨的進程,那麼以我的觀點來看,最好在服務中創建數據庫,並創建從Activity訪問數據庫數據的方法(例如,getAllData)。因此,與數據庫的所有交互將在服務中。 如果您的活動和服務在不同的流程中,您也可以創建ContentProvider,因此您的活動和服務將在邏輯上分開(活動只會從ContentProvider讀取數據,而服務會在那裏推送數據)。以我的觀點來看,這種方法將滿足您的所有需求。

1

如果在同一進程中的活動服務,也不要緊,你創建它,並在那裏你希望訪問它。只有當您在單獨的進程中運行服務時,才需要AIDL。

+0

我的服務將在手機啓動時開始。我只會使用該活動來設置服務並顯示一些圖(使用數據庫中的一些數據)。 我不確定有多少個進程。 – user1391967

+0

但我的服務和我的行爲都是在同一個項目(同一個應用程序)上定義的。 – user1391967

+0

據我所見,你在這裏只談論一個過程。 –