Я думаю, что в некоторых из Android
OS
иногда ОС убивает потоки, которые работают, в то время как Devices
Boots
, с которым Android не знаком или не распознает его. Это причина, по которой TimerTask
работает на некоторых устройствах, а на некоторых устройствах просто работает в течение 5-10 секунд, а затем приложение на операционной системе Android ForceStopped
automatically
на Device
Boot
( Примечание. Принудительная остановка из-за управления приложением, а не принудительное закрытие, поэтому я не получаю никакой ошибки в Logcat ).
Так что в этом случае решение состоит в том, чтобы использовать inbuilt
Mechanism
, который Android
OS
распознает и не убивает его и поддерживает его в рабочем режиме. В этом случае мне удалось использовать AlarmManager
для выполнения моей задачи, и она работает.
Возможно, я не прав, но мое окончательное решение состояло в том, чтобы использовать AlarmManager
, чтобы приложение работало на каждом устройстве.
@Override
public void onReceive(Context context, Intent arg1) {
Intent myIntent = new Intent(context, AlarmService.class);
PendingIntent pendingIntent = PendingIntent.
getService(context, 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + 2000, 2000, pendingIntent);
}
UPDATE:
AlaramManager is critical system service that runs all the time.