Ich habe eine App, die ein Wecker sein sollte. Wenn ich die Benachrichtigungszeit etwa 5 Minuten oder 30 Minuten einstelle, klingelt es wie es soll, aber wenn ich es etwa 4 Stunden wegsetze, klingelt es nicht, weder wenn mein Gerät nie berührt wird (über Nacht), noch wenn ich es benutze es regelmäßig (am Tag).WakefulBrodcastReceiver/Alarm klingelt nicht (Wakelock? Prozess getötet?)
PowerManager powman = (PowerManager) getSystemService(POWER_SERVICE);
PowerManager.WakeLock wakeLock = powman.newWakeLock(PowerManager.FULL_WAKE_LOCK,"MyWakelockTag");
wakeLock.acquire();
Dann rufe ich meine AlarmReceiver
wie folgt aus::
Intent alarmIntent = new Intent(main.this, AlarmReceiver.class);
PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(main.this, 8932, alarmIntent, 0);
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
manager.set(AlarmManager.RTC_WAKEUP, AlertDate.getTime(), alarmPendingIntent);
Und schließlich mein AlarmReceiver
sieht wie folgt aus:
public class AlarmReceiver extends WakefulBroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
main.Alert(context);
}
}
Im Haupt Methode, die ich dieses Wackelock
habe
Mein Manifest ist hier:
<uses-permission android:name="android.permission.WAKE_LOCK" />
...
<application
...
<receiver
android:name=".AlarmReceiver"
android:permission="android.permission.WAKE_LOCK">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
</application>
Also ist die sehr kurze Frage: Warum wird main.Alert(context);
nicht nach einer längeren Zeit aufgerufen? Wird der Prozess möglicherweise durch die Android OS
getötet?
Haben Sie WAKE_UP Erlaubnis zu manifesten? und erkläre AlarmReceiver zu manifest – GiapLee
ja ich habe beide :) Ich habe es in meinem Beitrag über –