我有一個具有可變生命期的服務。它可能從5分鐘到2小時執行(例如)。所以我在尋找最好的方法來做到這一點,我的服務必須實現以下功能:在Android中執行服務的最佳方法
- 發送(我的服務器)每5秒LAT-長和一些額外的信息(
string
的,boolean
年代和int
的)
我已經嘗試了‘正常’的服務,並試圖做這樣的事情來實現這一目標:
public class MyFiveSecondsService extends Service {
private Handler handler;
Runnable r = new Runnable() {
@Override
public void run() {
//here send my new data
}
};
public void onCreate(){
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(handler == null){
handler = new Handler();
}
handler.post(r);
return super.onStartCommand(intent, flags, startId);
}
}
其實是代碼的工作,但我得到了一些性能公關oblems這種做法,所以我試圖做這樣的事情:
public class SendUniquePositionIntentService extends IntentService {
public SendUniquePositionIntentService() {
super("co.bomboapp.Service.IntentService.SendUniquePositionIntentService");
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
protected void onHandleIntent(Intent intent) {
//do the logic here
}
}
public class MyFiveSecondsService extends Service {
private Handler handler;
Runnable r = new Runnable() {
@Override
public void run() {
//call my SendUniquePositionIntentService here
}
};
public void onCreate(){
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(handler == null){
handler = new Handler();
}
handler.post(r);
return super.onStartCommand(intent, flags, startId);
}
}
而且這種方法都沒有奏效,我已經關閉應用程序的任何服務不停地運轉。因此,在開始嘗試實現這一目標之前,我需要一些方向,做這種「無限循環服務」並保持性能的最佳方法是什麼?
我使用Android
4.1作爲最小API
和目標5.0 API
。 我的測試設備是Nexus
5正在運行Android
6. 現在我正在使用parse.com
作爲數據庫。
服務被設計爲在您的活動被破壞後仍然運行。所以不要忘記在工作完成時停止服務 –
它會在適當的時候自行停止,但無論如何,謝謝! – guisantogui
爲什麼你不直接調用SendUniquePositionIntentService?我認爲用SendUniquePositionIntentService實現你的需求就足夠了。 – xxxzhi