当前位置: 首页 > 知识库问答 >
问题:

android应用程序终止状态下的Workmanager定期工作请求

储国发
2023-03-14

我需要每X分钟从服务器同步一次数据,即使在关闭应用程序之后也是如此。我使用WorkManger和PeriodicWorkRequest每X分钟触发一次。这是每X分钟触发一次,即使我们关闭了应用程序。退出应用程序后我面临的问题是如何访问静态类或变量?

示例代码:

public void InitiateWorkManager()
    { 
        PeriodicWorkRequest myWorkRequest = PeriodicWorkRequest.Builder.From<SyncClass>(System.TimeSpan.FromMinutes(15)).Build();

        WorkManager.Instance.EnqueueUniquePeriodicWork(“MyIUniqueId”, ExistingPeriodicWorkPolicy.Keep, myWorkRequest); 
    }

同步类。反恐精英:

  public class SyncClass : Worker
   {
        Context _context;
        public SyncClass(Context context, WorkerParameters workerParameters) : base(context, workerParameters)
        {
            _context = context;
        }

        public override Result DoWork()
        {
             var url = Constants.url;
            var list=  DependencyService.Get<IEmployee>().GetEmployeeList();
        }

  return Result.InvokeSuccess();
}

常数。反恐精英:

public static class Constants
{
public static string url =“www.xyz.com/getdata”
}

当应用程序处于前台和后台状态,但由于DependencyService类为null而在终止状态下失败时,这种方法可以正常工作。

在这里,静态类DependencyService是从nuget包“Xamarin.Form”访问的,如果应用程序处于终止状态,则为null。

链接解释了类似的问题,但这更多的是关于流程处理。

有没有办法在DoWork()中重新定义这个静态类/变量,有什么提示/建议?沙马林。Android或java/kotlin。

共有1个答案

仲孙钊
2023-03-14

在调用DependencyService之前,使用下面的代码可以解决上述问题。Get()。GetEmployeeList()

Xamarin.Forms.Init()
 类似资料:
  • 我使用实现了一些重复性任务,当我积极使用手机时,它在白天工作得很好(每段时间运行我的代码,早晚有几分钟)。晚上会跳过很多时段,我想知道为什么会这样,以及如何解决这个问题。 结果如下所示: --- --- --- --- --- ... --- --- --- --- --- --- ... 这肯定与设备活动有关,还请注意,我禁用了应用程序的节能功能(我的设备是2018年Android 9.0推出的

  • 我正面临一个浪费时间的问题 我正在用本地数据库构建一个应用程序。例如,我希望此应用程序每隔15分钟向用户发送一次通知,其中包含来自数据库的一些数据。我已经成功地实现了这一点,只要应用程序正在运行或未被终止,但当应用程序被终止时,用户将不再看到通知。我正在两台真正的设备上测试这个应用程序 在主要活动中,我使用上一个通知程序每15分钟显示一次:- 当我更改通知程序类代码以显示不带任何值的日志消息时,l

  • 我正在尝试使用WorkManager每10秒运行一个简单的工作。当应用程序在后台或前台运行时,它可以完美地工作。当我关闭应用程序(杀死应用程序)时,工作将不再被调用。 我在创建MainActivity时调用以下代码 工人阶级 这些代码在我的应用程序未关闭时运行良好。 我如何让它运行,即使应用程序关闭?

  • 有一个很奇怪的问题...有一次我打开我的项目,并注意到我没有机会从工作室推出app...黑色三角形唱罩禁用 但是,如果我构建apk文件并使用adb命令安装它,它就可以工作。 我已经尝试删除和下载新的Android Studio,但没有任何改变... 我的插件 我的配置

  • 我一直在尝试运行我的客户端/服务器android程序。但是每当我在android上运行客户端部分时,它都会出错不幸的是,您的应用程序已停止运行。我尝试过阅读logcat,但无法解决问题。下面是我的代码...我从3天开始一直在尝试。需要项目帮助 logcat公司 activity\u new\u main\u活动。xml manifest.xml 新建_main_活动。Java语言

  • 问题内容: 来自Android上我的PhoneGap / Cordova应用的Ajax HTTPS请求莫名其妙地失败,状态为= 0。仅在使用释放键对应用程序进行签名(即从ADT导出)时显示,而在使用调试键进行签名(直接在模拟器或电话中运行)时不显示。 总是输出 不管我是从Play商店还是通过实用工具安装应用程序,都没有关系。我认为它可以与证书连接,因为并非所有HTTPS域都以这种方式失败。 问题答