前台服务是运行单个方法的唯一选择吗?

问题描述 投票:0回答:2

我创建了一个应用程序,我希望该应用程序在时间到达 00:00(基本上是第二天)时运行一个方法。

就上下文而言,我的应用程序每天都会保存一个 csv 文件。我研究了如何使应用程序在后台运行,而前台服务是我发现的,但我觉得这太过分了,因为我的应用程序每天只会运行一种方法一次(方法在问题是创建 csv 文件的问题)。

前台服务是我唯一的选择还是还有其他方法可以做到这一点?

android service foreground-service
2个回答
1
投票

选择后台任务处理程序的指南

通常您会想使用

AlarmManager

Intent intent = new Intent(getApplicationContext(), YourBroadCastReceiver.class);
    final PendingIntent pIntent = PendingIntent.getBroadcast(this, 0,
            intent, PendingIntent.FLAG_IMMUTABLE);
    long firstMillis = System.currentTimeMillis(); // alarm is set right away
    AlarmManager alarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
    alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, firstMillis,
            AlarmManager.INTERVAL_DAY, pIntent); //will call your YourBroadCastReceiver class once a day

你的BroadCastReceiver.java

public class YourBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

  //your csv logic

    }
}

您还需要在清单中的

<application>
标签内注册 YourBroadCastReceiver

<receiver android:name=".YourBroadCastReceiver" android:enabled="true" android:exported="true" />
    

-1
投票
我认为 AlarmManager 你在寻找什么:

https://developer.android.com/reference/android/app/AlarmManager

© www.soinside.com 2019 - 2024. All rights reserved.