2012-07-12 113 views
2

我在想,Android服務和啓動它的活動(在這種情況下是通過StartService()方法發生的)之間的關係是什麼?Android的活動和服務關係

該服務只是另一個線程在該活動所屬的同一進程中運行,還是它自己擁有?

我問的原因是b/c我正在使用一個SQLite數據庫,它將從活動和它啓動的服務中進行訪問,因此需要確定正確的數據庫訪問同步方式他們(利用SQLite的內置多線程支持,或實現一些自行開發的進程間連接方法)。

注意:我不是在詢問如何同步訪問,我試圖找出天氣我從兩個獨立的進程或單獨的線程訪問數據庫,這將決定我如何去做這件事。

注意:我使用Mono.Data.Sqlite編寫.net/mono,而不是原始的Android/Java。

任何有識之士都歡迎和讚賞,謝謝。

+0

必讀文章,實現Android服務:http://www.vogella.com/articles/AndroidServices/article.html – samosaris 2012-07-19 15:21:52

+0

任何人誰決定來運行他們在一個單獨的流程服務,你應該看到HTTP: //mono-for-android.1047100.n5.nabble.com/Creating-service-in-a-new-process-td5710256.html和評論#4在https://bugzilla.xamarin.com/show_bug.cgi? id = 763 – samosaris 2012-07-19 15:23:36

+0

MonoDroid服務的問題是上述註釋地址已經在4.2.4補丁中解決了。 – samosaris 2012-07-25 13:24:58

回答

3

是否android developer網站不包含您的答案?它詳細介紹了ServiceActivity

注意:一種服務,它的託管過程中 服務不會創建自己的線程的主線程中運行,在單獨的 過程中不運行(除非另行指定)。這意味着,如果您的服務將執行任何CPU密集型工作或阻止操作(如MP3播放或聯網) ,則應在服務內創建一個新線程 以完成此項工作。通過使用單獨的線程,您可以降低應用程序不響應(ANR)錯誤的風險,並且應用程序的主線程可以保持專用於用戶與您的活動的交互 。

+0

完美。非常感謝。 – samosaris 2012-07-12 16:28:58

+0

我完全想着在這裏複製這個警告筆記,它的全部內容。感謝有關接受的提示。 – samosaris 2012-07-12 17:12:24