在特定时间启动应用

TiG*_*Ger 23 android task alarm

我想知道是否可能(以及如何)在特定时间启动我的应用程序,就像闹钟在特定时间熄灭.假设我希望我的应用程序在早上8点启动,这是可行的吗?

nin*_*nse 19

你可以用AlarmManager来做,这是一个简短的例子.首先,您需要设置警报:

AlarmManager am = (AlarmManager) con.getSystemService(Context.ALARM_SERVICE);

Date futureDate = new Date(new Date().getTime() + 86400000);
futureDate.setHours(8);
futureDate.setMinutes(0);
futureDate.setSeconds(0);
Intent intent = new Intent(con, MyAppReciever.class);

PendingIntent sender = PendingIntent.getBroadcast(con, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, futureDate.getTimeInMillis(), sender); 
Run Code Online (Sandbox Code Playgroud)

接下来,您需要使用一些代码创建一个接收器来执行您的应用程序:(即启动您的应用程序):

public class MyAppReciever extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    startActivity(new Intent(context, MyAppMainActivity.class));
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为有一些缺失:am.set(AlarmManager.RTC_WAKEUP,futureDate.getTimeInMillis(),sender); (2认同)

Jef*_*man 11

您可能正在寻找AlarmManager,它允许您以特定间隔或给定时间开始服务/活动/发送广播,重复与否.这就是你在android中编写内存友好后台服务的方法.AlarmManager有点像unix中的cron.它允许您的后台服务启动,执行其工作,并使内存不足.

您可能不想开始一项活动(如果这就是"应用程序"的意思).如果要提醒用户发生了某些事情,请添加在给定时间启动接收器的警报,并让接收者添加通知.通知可以在单击时打开应用程序.这比将一些可能不需要的活动带到前台的侵入性要小.

  • 实际上,我确实想参加我的主要活动:DI确实了解您的方法侵入性较小,但我也想做一些侵入性的:P (2认同)