/ / Kill Application - android, alarmmanager

Kill Application - android, alarmmanager

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 № 1

W 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