gpt4 book ai didi

android - Android 中的 iOS Background Fetch 等效项

转载 作者:可可西里 更新时间:2023-11-01 04:45:22 25 4
gpt4 key购买 nike

我想知道是否有适用于 iOS BackgroundFetch 功能的 Android 版本。

我希望我使用 Cordova 的 Android 应用每 15 分钟左右唤醒一次,检查更新并执行一些其他杂项任务。

在 iOS 中,我可以通过使用 cordova-background-fetch 来做到这一点插件。

由于那个插件没有Android版本,我很乐意自己写;但我首先想知道如何在 Android 中实现此类功能。有什么建议吗?

最佳答案

在 Android 中,您可以将 AlarmManger 设置为每 X 毫秒唤醒一次并运行 PendingIntent

这段代码看起来像这样。

AlarmManager mgr=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i=new Intent(context, OnAlarmReceiver.class);
PendingIntent pi=PendingIntent.getBroadcast(context, 0, i, 0);

mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime()+60000,
PERIOD,
pi);

Android 在后台运行的默认 IntentService 有一些限制。

您还可以查看外部库 WakefulIntentService ( https://github.com/commonsguy/cwac-wakeful )。我将它与 AlarmManager 一起用于运行后台任务。

更新:

OnAlarmReceiver 类

public class OnAlarmReceiver extends BroadcastReceiver {

public static String TAG = "OnAlarmReceiver";

@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "Waking up alarm");
WakefulIntentService.sendWakefulWork(context, YourService.class); // do work in the service class
}

}

你的服务类

public class YourService extends WakefulIntentService {

public static String TAG = "YourService";

public YourService() {
super("YourService");
}

@Override
protected void doWakefulWork(Intent intent) {
Log.d(TAG, "Waking up service");

// do your background task here
}
}

关于android - Android 中的 iOS Background Fetch 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33622609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com