Android AlarmManager进程退出后无法正常工作

4
我想通过 AlarmManager 类设置闹钟。通常情况下,一切正常。但是如果我的应用程序进程停止或手机关闭并重新开启,闹钟将不会启动。有什么帮助吗?或者安卓提供其他服务吗?
谢谢。

如果您的类的进程死亡,那么警报也会随之消失是很合理的。如果您希望在此类事件发生后它仍然能够工作,您需要在应用程序被杀死或手机重新启动时保存应用程序的状态,重新启动应用程序并获取警报配置。 - Sephy
实际上,我想要像Android内置闹钟一样的东西,即使手机没有开机也能使用。 - MHM
3
“如果你的班级进程死了,警报也会一起死掉”,这句话是不正确的。 - CommonsWare
2个回答

7

如果你重启手机,Android会清除所有闹钟管理器的意图。

你需要创建一个接收器来启动BOOT_COMPLETED,然后当你的设备启动时,你将获得onReceive()方法。在这个方法中,你可以重新创建所有的闹钟。

你需要在清单中声明接收器

<receiver android:name=".MyStartupIntentReceiver" android:enabled="true" android:exported="false">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>

而你的接收器将会是

import java.util.Calendar;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class MyStartupIntentReceiver extends BroadcastReceiver{

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

        // You can update pending intent here 

    }
}

2
谢谢您的快速回复。但是有没有更好的方法?Android内置的闹钟会做同样的事情吗? - MHM
我曾经搜索了很多来解决这个问题,但是除了这种方法,我没有找到更好的方式。我已经在我的一个应用程序中实现了这个逻辑。 - Dharmendra


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接