MAUI .NET 9 Android 15项目中PeriodicWorkRequest无法在应用关闭后执行的问题求助
MAUI .NET 9 Android 15项目中PeriodicWorkRequest无法在应用关闭后执行的问题求助
各位好,我在做MAUI .NET 9的C#项目,目标平台是Android 15(API 35)。我想实现每60分钟自动运行一次后台同步任务,要求哪怕应用被完全关闭、不在内存中也能正常触发。
查了不少资料,都说WorkManager是这类场景的推荐方案——刚好我也不需要绝对精确的定时,所以就用了Xamarin.AndroidX.Work.Runtime 2.10.2版本。为了测试方便,我先把任务间隔设成了16分钟,但现在遇到了棘手的问题:只有当应用处于前台打开状态时,任务才会正常调度执行;一旦我把应用关掉,PeriodicWorkRequest明明还在队列里,却再也不会触发执行了。
我已经折腾好几天了,试了各种调整都没用,真心求各位帮忙看看哪里出问题了,或者是不是我想实现的功能在Android 15上根本做不到?麻烦大家了!
我的WorkManager调度代码
var constraints = new AndroidX.Work.Constraints.Builder() .SetRequiredNetworkType(NetworkType.NotRequired) .SetRequiresBatteryNotLow(false) .SetRequiresCharging(false) .Build(); var workRequest = PeriodicWorkRequest.Builder .From<SyncWorkService>(16, Java.Util.Concurrent.TimeUnit.Minutes) .SetConstraints(constraints) .AddTag(worktag) .Build(); WorkManager.GetInstance(Android.App.Application.Context) .Enqueue(workRequest);
我的AndroidManifest配置(已经反复调整过多次,但都没效果)
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <application android:allowBackup="true" android:icon="@mipmap/appicon" android:supportsRtl="true"> <!--<service android:name="Wakemeapp.ForegroundService" android:enabled="true" android:exported="true" android:foregroundServiceType="dataSync" /> --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" android:exported="false" tools:node="merge" /> <!-- Boot reciver--> <receiver android:name=".BootReceiver" android:enabled="true" android:exported="true" android:permission="RECEIVE_BOOT_COMPLETED"> <intent-filter> <action android:name="BOOT_COMPLETED"/> </intent-filter> </receiver> </application>
内容来源于stack exchange
相关产品推荐
相关产品推荐

