我得到了一個生成用戶位置的服務。 我還得到了一個服務實例的線程,它從服務中獲取位置並將其發送到數據庫。 線程正在休眠1分鐘,然後再次詢問服務的地址並將其發送給數據庫。服務效率
我的問題是我應該創建而不是此線程的服務和第二個服務將開始每1分鐘? 好處是,服務不會運行時,他不需要喜歡的線程,但缺點是,我將不得不每隔1分鐘創建一個新的連接。
有什麼更好?誰更有效率?
我得到了一個生成用戶位置的服務。 我還得到了一個服務實例的線程,它從服務中獲取位置並將其發送到數據庫。 線程正在休眠1分鐘,然後再次詢問服務的地址並將其發送給數據庫。服務效率
我的問題是我應該創建而不是此線程的服務和第二個服務將開始每1分鐘? 好處是,服務不會運行時,他不需要喜歡的線程,但缺點是,我將不得不每隔1分鐘創建一個新的連接。
有什麼更好?誰更有效率?
我通常從一個思路,指出最好的永遠不使用Thread.sleep();
說,那裏是幾個選項,你可以接近:
。只需每隔1分鐘申請一次位置,但這可能會對電池造成奇怪的影響,因爲GPS無線電將在非工作時間內繼續運行。
。創建服務的PendingIntent並要求AlarmManager在1分鐘內再次調用它。這不會始終保持你的GPS(如果你的程序是正確的),但它需要再次固定位置。
。你也可以在相同的服務(不破壞並重新啓動它)使用ScheduledExecutorService每1分鐘運行一次線程。 (GPS ON或OFF取決於編程)
什麼是wrost?使線程每分鐘睡眠一分鐘或每分鐘連接到數據庫啓動服務。並且每隔1分鐘請求一個位置對我來說都不好,因爲我需要在那一分鐘內生成最準確的位置。這樣我將在1分鐘內得到一個位置,並且將發送一個位置。 –
我假設這是一個本地數據庫連接,這意味着使連接快速而便宜,所以你不應該擔心。所以你應該設置Location監聽器,每當你調用requestLocationUpdates時就會給你更新,並且你從Listener回調函數中產生一個新的線程,這個線程將把數據放到DB上 – Budius
爲什麼你需要一個線程或第二個服務來插入插入到數據庫中的位置更新。爲什麼你不能在requestLocationUpdates方法和onLocationChanged事件中爲每1分鐘配置locationupdates,爲什麼不能直接將記錄插入表中。每分鐘運行一次服務或線程可能會影響電池性能。我在我的一個項目中看到過。
這是真的我的應用程序正在吃我的電池壽命。我想每隔10秒產生一次更新,並且每隔1分鐘發送一次最準確的更新。如果我將requestLocationUpdates更改爲1分鐘,我將每1分鐘獲得一個位置,這對我不利。或者我錯了? *另一點是,在服務中執行線程進程會導致主線程上的網絡異常 –
我想,如果您嘗試使用GPS_PROVIDER檢索座標,那麼不會有太大的區別。你如何在1分鐘內確定6個座標哪一個準確?我寧願繼續進行1分鐘,並節省電池壽命...如果電池耗盡更多,用戶將感到沮喪。如果您對我的回覆沒有問題,請接受此答案。謝謝 –
現在我半信半疑,關於電池壽命,我同意你的看法,但是關於每隔1分鐘產生一個我不需要的位置(我希望你能說服我)每1分鐘產生一次更新可能會給我一個非常不好的位置,例如城市級別的位置。關於如何計算精度,我還沒有完成該部分,但它在這裏:http://developer.android.com/guide/topics/location/strategies.html點擊f3,並尋找這一行:「檢查是否新定位修正或多或少準確「。使用城市級別的位置非常糟糕(並且可能通過生成單個位置)。 –
爲什麼你首先有2個物體? – njzk2
你的意思是服務和線程?避免網絡上的主線程異常。 –
但爲什麼線程睡覺? – njzk2