我有一個應用程序,幾乎不需要用戶交互,但需要Geofences。我可以在後臺服務中完全運行它嗎?我可以在後臺服務中完全運行Android GeoFencing嗎?
服務第一次運行時將會有一個活動。此活動將啓動服務併爲BOOT_COMPLETED註冊BroadcastReceiver,以便服務在啓動時啓動。這個活動不可能再次運行。
該服務將設置警報定期關閉,這將導致IntentService從網絡下載位置列表。然後,這個IntentService將在這些位置周圍設置Geofences,並創建PendingIntents,這些PendingIntents將在接近位置時觸發。反過來,這些PendingIntents將導致另一個IntentService採取一些行動。
所有這些都需要在後臺進行,除了安裝後第一次啓動Activity之外,沒有用戶交互。因此,Activity不會與LocationClient或任何位置服務交互。
我實際上已經設置了proximityAlerts,但希望移至新的Geofencing API以滿足電池壽命的原因。但是,我聽說從服務中使用LocationClient可能會遇到一些問題。具體來說,我聽說(對不起,沒有提及,只是道聽途說索賠):
- 位置客戶依賴於用戶界面的可用性錯誤處理
- 從後臺線程調用時,LocationClient.connect()假定它從主UI線程(或其他線程與事件活套)調用,所以連接回調永遠不會被調用,如果我們稱這種方法從服務運行在後臺線程
當我調查,我看不到任何理由爲什麼會這樣,或爲什麼它會阻止我做我想做的事情。我希望它幾乎可以作爲proximityAlerts的替代品...
任何人都可以在這裏瞭解一些事情嗎?
我找不到和API列出地理柵欄,我也很想有一個。我也擔心我的sqlite數據庫和實際的註冊防護列表不同步... –