我正在尝试使用WorkManager每10秒运行一个简单的工作。当应用程序在后台或前台运行时,它可以完美地工作。当我关闭应用程序(杀死应用程序)时,工作将不再被调用。
我在创建MainActivity时调用以下代码
fun scheduleNotification(context: Context) {
val workRequest = OneTimeWorkRequest.Builder(NotificationWorker::class.java).setInitialDelay(10000, TimeUnit.MILLISECONDS)
WorkManager.getInstance().enqueueUniqueWork("NotificationWorker", ExistingWorkPolicy.REPLACE, workRequest.build())
Log.d("NotificationWorker", "start")
}
工人阶级
class NotificationWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
override fun doWork(): Result {
Log.d("NotificationWorker", "Working")
NotificationUtil.scheduleNotification(applicationContext) // n times
return Result.success()
}
}
这些代码在我的应用程序未关闭时运行良好。
我如何让它运行,即使应用程序关闭?
我建议您对需要定期执行的任务使用PeriodicWorkRequest。请在此处查看详细信息。
https://developer.android.com/topic/libraries/architecture/workmanager/how-to/recurring-work
定期工作经理只在15分钟的最小间隔工作。如果你需要连续工作,那么使用前台服务来定义你的工作。记住把它放在单独的线程和前台服务通知中,以保持它活着,否则系统将在一分钟内杀死它。
我的任务是设置警报,以触发接收器在特定时间显示通知。 如果应用程序是打开的或只是在后台,代码就可以完美地工作。 在应用程序被杀死时,当执行警报时仍然可以触发接收器。 但是,没有显示通知。 我能做什么? 报警功能: 报警接收器 显示xml
问题内容: 我在我的一个Java应用程序中使用Socket通信。据我所知,如果程序遇到任何异常终止,侦听端口不会关闭,并且由于报告“端口已打开。”而无法重新启动该程序。处理这个问题?处理此问题的一般方法是什么? 问题答案: 听起来您的程序正在套接字上侦听。通常,当程序退出时,操作系统会关闭所有可能打开的套接字(包括侦听套接字)。但是,对于侦听套接字,操作系统通常在程序退出后将端口保留一段时间(几分
我使用firebase推送通知到设备令牌。当应用程序打开或前景我可以得到通知很好。但当当前任务的应用程序被杀死或清除应用程序时,我无法收到通知发送。 我试过OnMessageReceedEardy的第一次工作。但现在它不工作时,杀死的应用程序。 > 代码接收通知:
输出:pool-2=线程-1 pool-3=线程-1,pool-4=线程-1............. 我想要池-2=线程-1池-2=线程-1池-2=线程-1................ Threadpool不能从method()放到外部,每次都需要创建新的Threadpool。我可以完全终止线程池吗? 有什么需要帮忙的吗
我需要每X分钟从服务器同步一次数据,即使在关闭应用程序之后也是如此。我使用WorkManger和PeriodicWorkRequest每X分钟触发一次。这是每X分钟触发一次,即使我们关闭了应用程序。退出应用程序后我面临的问题是如何访问静态类或变量? 示例代码: 同步类。反恐精英: 常数。反恐精英: 当应用程序处于前台和后台状态,但由于DependencyService类为null而在终止状态下失败
Android studio不在Windows 8中运行。我下载并安装了它,但当我按下图标运行它时,什么都没发生。我尝试与管理员一起运行。我尝试设置与Windows 7的兼容性。