У меня есть AlarmManager
, который показывает Toast
каждые 10 мин., Но когда os убивают приложения в фоновом режиме, поэтому мой AlarmManager
больше не работает. что мне нужно сделать?Мой диспетчер аварийных сообщений убит после моего приложения, убитого в android
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context con, Intent arg1) {
Global.ShowMessage(con, Global.GetCurrentDateTime());
}
}
В Manifest.xml
:
<receiver android:name=".MyReceiver" > </receiver>
в главном Activity
:
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 10);
long time = cal.getTimeInMillis();
Intent i = new Intent(this, MyReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(this, 9854, i, PendingIntent.FLAG_UPDATE_CURRENT);
// am.set(AlarmManager.RTC_WAKEUP,time,pi);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, time, 600 * 1000, pi);
Поскольку это связано с основной нитью, это нормально. Вам нужно будет использовать Службу, у которой больше шансов пережить какой-то клик системы, но без уверенности. – AxelH
В декларации манифеста получателя вам нужны 'android: enabled =" true "и' android: exported = "true" ' –
@ nickfriskel У вас есть для этого источник? Я всегда думал, что «exported» использовался для того, чтобы сущность была видима другим приложением и была включена. IT не имеет никакого отношения к некоторому системному сигналу уничтожения, чтобы восстановить некоторую память. – AxelH