Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当应用程序在Android(Kotlin)中完全关闭时,我如何运行闹钟_Java_Android_Kotlin_Alarm - Fatal编程技术网

Java 当应用程序在Android(Kotlin)中完全关闭时,我如何运行闹钟

Java 当应用程序在Android(Kotlin)中完全关闭时,我如何运行闹钟,java,android,kotlin,alarm,Java,Android,Kotlin,Alarm,我正在创建一个自定义报警应用程序,这意味着我必须运行一段代码(例如,调用一个Intent,以便它打开一个屏幕,我可以在那里停止报警)。实现这一目标的最佳方式是什么 我用闹钟管理器试了一下,用了 <receiver android:name=".receiver.AlarmReceiver" android:process=":remote"></receiver> 10000因为我想测试它,如果它在10秒后被调用

我正在创建一个自定义报警应用程序,这意味着我必须运行一段代码(例如,调用一个Intent,以便它打开一个屏幕,我可以在那里停止报警)。实现这一目标的最佳方式是什么

我用闹钟管理器试了一下,用了

<receiver android:name=".receiver.AlarmReceiver"
        android:process=":remote"></receiver>
10000因为我想测试它,如果它在10秒后被调用

这是制作闹钟应用程序的最佳方法吗?

简单的“是”太少了,所以我只能补充一点,确切的闹钟比不准确的闹钟耗电更多,所以针对用户使用这两种类型。不过,对于闹钟应用程序,广播呼叫应该是准确的,所以继续使用该解决方案

此外,来自:

注意:Alarm Manager适用于希望在特定时间运行应用程序代码的情况,即使应用程序当前未运行。对于正常的计时操作(滴答声、超时等),使用处理程序更容易、更高效

还要注意自API19以来的一个变化(如果您希望支持这样的旧版本):

注意:从API 19(Build.VERSION_CODES.KITKAT)开始,警报传递是不准确的:操作系统将切换警报,以尽量减少唤醒和电池使用。有新的API支持需要严格交付保证的应用程序;请参阅setWindow(int,long,long,android.app.pendingent)和setExact(int,long,android.app.pendingent)。targetSdkVersion早于API 19的应用程序将继续看到之前的行为,其中所有警报都会在请求时准确传递

  var alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
    val intent = Intent(context, AlarmReceiver::class.java)
    val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
    alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 10000, pendingIntent )