我想知道iOS BackgroundFetch
功能是否有Android版本。
我希望我的Android应用程序使用Cordova每15分钟左右醒来并检查更新并执行其他一些其他任务。
在iOS中,我可以使用cordova-background-fetch插件执行此操作。
由于该插件没有Android版本,我很乐意自己编写;但我首先想知道如何在Android中实现这样的功能。有什么建议吗?
答案 0 :(得分:1)
您可以使用AlarmManager。除此之外,您还可以使用AccountManager。
答案 1 :(得分:1)
在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
}
}
YourService类
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
}
}