【问题标题】: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 会杀死你的应用程序和许多其他不会让你的应用程序触发警报的事情。

标签: java android multithreading


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-18
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多