Mam usługę, która ma zmienny czas życia. Może wykonać od 5 minut do 2 godzin (na przykład). Więc szukam najlepszego podejścia do tego, a moja usługa musi osiągnąć następujące funkcje:Najlepsze podejście do wykonywania usług w systemie Android
- Wysyłanie (do mojego serwera) łac długie co 5 sekund i dodatkowe informacje (
string
„s,boolean
's iint
' s)
próbowałem "normalne" usługi i starał się zrobić coś takiego, aby to osiągnąć:
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);
}
}
Właściwie że kod działa, ale mam pewne pr wydajności oblems z tym podejściem, więc starałem się zrobić coś takiego:
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);
}
}
I to podejście nie działało, kiedy zamknęły aplikację każda usługa biegł. Tak więc przed rozpoczęciem jakiejkolwiek innej próby osiągnięcia tego, potrzebuję jakiegoś kierunku, jakie jest najlepsze podejście do wykonania "nieskończonej pętli" i utrzymania wydajności?
Używam Android
4.1 jako min. API
, a kierowanie na 5.0 API
. Moje urządzenie testowe to Nexus
5 działające Android
6. W tej chwili używam bazy danych jako bazy danych parse.com
.
Usługi są zaprojektowane tak, aby nadal działały po zniszczeniu Twojej działalności. Więc nie zapomnij przerwać usługi, gdy praca zostanie zakończona. –
Zatrzymuje ją w odpowiednim momencie, ale dzięki, i tak! – guisantogui
dlaczego nie nazywasz bezpośrednio SendUniquePositionIntentService? Myślę, że wystarczy spełnić twoje wymagania używając SendUniquePositionIntentService. – xxxzhi