我创建了一个应用程序,我希望该应用程序在时间到达 00:00(基本上是第二天)时运行一个方法。
就上下文而言,我的应用程序每天都会保存一个 csv 文件。我研究了如何使应用程序在后台运行,而前台服务是我发现的,但我觉得这太过分了,因为我的应用程序每天只会运行一种方法一次(方法在问题是创建 csv 文件的问题)。
前台服务是我唯一的选择还是还有其他方法可以做到这一点?
通常您会想使用
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" />