即使 Android 应用程序被终止或在后台运行,也会通知不活跃的用户(7 天内未打开应用程序的用户)
Notify inactive users (who have not opened the app for 7 days) even if Android app gets killed or runs in background
我有一个要求,我需要通知不活跃的用户(7 天内没有打开应用程序的用户)。这意味着如果应用程序在后台运行 7 天或应用程序已被杀死且 7 天未使用,则必须发送通知。
我遵循了一个使用 AlarmManager
的算法,类似于 this answer but the notifications are not sent if the app gets killed. I tried to integrate BroadcastReceiver
as shown below but it creates an infinite loop when I call it from OnDestroy()
of CheckRecentRun
class (because it destroys itself periodically). Also, as I learnt from this answer,onDestroy() 在应用程序被杀死时并不总是被调用。
public class TimerRestarterBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TimerRestarterBroadcastReceiver.class.getSimpleName(), "Service has stopped");
context.startService(new Intent(context, CheckRecentRun.class));
}
}
有什么更简单有效的方法吗?
您可以试试 workmanager schedule work 。我希望这会解决您的问题。
要了解更多信息,请检查它。 Check it
使用 WorkManager 的可能场景:
- 您创建了一个在 7 天内发送通知的任务
- 每次用户使用 7 天后将旧任务的时间更改为新任务
我有一个要求,我需要通知不活跃的用户(7 天内没有打开应用程序的用户)。这意味着如果应用程序在后台运行 7 天或应用程序已被杀死且 7 天未使用,则必须发送通知。
我遵循了一个使用 AlarmManager
的算法,类似于 this answer but the notifications are not sent if the app gets killed. I tried to integrate BroadcastReceiver
as shown below but it creates an infinite loop when I call it from OnDestroy()
of CheckRecentRun
class (because it destroys itself periodically). Also, as I learnt from this answer,onDestroy() 在应用程序被杀死时并不总是被调用。
public class TimerRestarterBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TimerRestarterBroadcastReceiver.class.getSimpleName(), "Service has stopped");
context.startService(new Intent(context, CheckRecentRun.class));
}
}
有什么更简单有效的方法吗?
您可以试试 workmanager schedule work 。我希望这会解决您的问题。 要了解更多信息,请检查它。 Check it
使用 WorkManager 的可能场景:
- 您创建了一个在 7 天内发送通知的任务
- 每次用户使用 7 天后将旧任务的时间更改为新任务