未启动活动时是不是可以运行java代码?

Posted

技术标签:

【中文标题】未启动活动时是不是可以运行java代码?【英文标题】:Is it possible to run java code when activity is not launched?未启动活动时是否可以运行java代码? 【发布时间】:2021-12-31 19:03:51 【问题描述】:

我正在开发一个警报 java 应用程序。 我想在系统时钟到达targetTime 时运行Alarm(); 函数。 但即使应用程序未打开,我也想做这些。 所以我想以某种方式在androids后台运行它。

我的代码:

void AlarmCheck (DateTimeAlarm currentTime, DateTimeAlarm targetTime)

    if(!targetTime.alarmed && currentTime.day == targetTime &&
        currentTime.hour == targetTime.hour && currentTime.minute >= targetTime.minute)
    
        targetTime.alarmed = true;
        Alarm();
    

这是DateTimeAlarm 的类:

public class DateTimeAlarm

    public int day;
    public int hour;
    public int minute;
    public bool alarmed = false;

    public DateTimeAlarm(int day, int hour, int minute)
    
        this.day = day;
        this.hour = hour;
        this.minute= minute;
    

我不知道把这段代码放在哪里请帮助我。

我是java新手,所以请简单解释一下。感谢您的任何建议。

【问题讨论】:

简短的回答是你不能,虽然你可以阅读alarmManager来设置警报developer.android.com/reference/android/app/AlarmManager,但不能保证它会准时触发,或者根本不会触发. doze mode 会杀死你的应用程序和许多其他不会让你的应用程序触发警报的事情。 【参考方案1】:

这是您开始了解服务的时候。 如果您想在后台长时间运行操作,您必须创建一个服务来为您执行此操作。我为你留下官方网站的链接。 https://developer.android.com/guide/components/services

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:

在 Android 中使用 Services 执行后台任务变得越来越困难,请改用 WorkManager:https://developer.android.com/topic/libraries/architecture/workmanager

【讨论】:

以上是关于未启动活动时是不是可以运行java代码?的主要内容,如果未能解决你的问题,请参考以下文章

Java垃圾回收机制(未掌握)

如何修复“运行‘应用程序’时出错:未找到默认活动”

任务':app:transformClassesWithDexBuilderForDebugAndroidTest'的执行失败,java.lang.RuntimeException(代

java垃圾回收GC

java虚拟机jvm启动后java代码层面发生了什么?

运行应用小部件 - 无法识别启动活动