Chcę zabić moją aplikację po 10 sekundach, chcę uruchomić usługę, która zabije aplikację po otrzymaniu Kill Action. Ale ten kod zwrócił uwagę po 10 sekundach. Czemu?
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, service_MyService.class);
intent.setAction("Kill");
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,intent, 0);
Calendar time = Calendar.getInstance();
time.setTimeInMillis(System.currentTimeMillis());
time.add(Calendar.SECOND, 10);
alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(),pendingIntent);
Odpowiedzi:
0 dla odpowiedzi № 1W twoim kodzie wysyłasz intencję transmisji
PendingIntent.getBroadcast(this, 0,intent, 0);
Który może uruchomić BroadCastReceiver, a nie usługę. Jednak używasz właściwego zamiaru, ponieważ AlarmManager nie może obudzić usług, tylko BroadCastReceiver-y.
Powinieneś utworzyć BroadCastReceiver zamiast usługi i zastąpić tę linię:
Intent intent = new Intent(this, service_MyService.class);
z tą linią
Intent intent = new Intent(this, KillerBroadCastReceiver.class);
a następnie w twojej klasie KillerBroadCastReceiver zabijasz aplikację.
Jednak jeśli chcesz zabić aplikację po pewnym czasie, lepszym rozwiązaniem jest użycie Handler. Oto przykład:
public class VeryFirstActivity extends Activity {
Handler mKillerHandler;
public void onCreate(...) {
mKillerHandler = new Handler();
mKillerHandler.postDelayed(new Runnable() {
public void run() {
VeryFirstActivity.this.finish();
}
}, 10000); // 10 seconds
}
}
0 dla odpowiedzi nr 2
Nie jest to dobre, ponieważ Android chce samodzielnie zarządzać aplikacją, ale możesz to zrobić w ten sposób.
System.exit(0);
0 dla odpowiedzi № 3
Możesz zabić swoją aktywność, używając:
finish();
Lub możesz zabić swoją aplikację:
System.exit(0);
Ale oba nie są sugerowane. System Android nie nadaje się do tego. Kontrola systemu operacyjnego Android, by zabijać aplikacje.
Więcej informacji jest tutaj