【问题标题】:Android AlarmManager did not work after process stops进程停止后,Android AlarmManager 不起作用
【发布时间】:2011-09-29 12:31:24
【问题描述】:

我想通过AlarmManager 类设置闹钟。通常,它工作正常,一切正常。 但是如果我的申请程序停止或者手机关机再开机,闹钟就不会响了。有什么帮助吗? 还是android提供的其他服务?

谢谢

【问题讨论】:

  • 如果你的类的进程死了,警报也随之消失,这是合乎逻辑的。如果您希望它在此类事件之后继续工作,则必须在应用被杀死或手机重新启动时保存应用的状态,重新启动应用并获取警报配置。
  • 事实上,我想要像 Android 内置闹钟这样的东西,如果没有,它甚至可以打开手机。
  • @Sephy:“如果你的班级进程死了,警报就会随之消失,这是合乎逻辑的。” -- 这是不正确的。

标签: android


【解决方案1】:

如果您重新启动手机,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 

    }
}

【讨论】:

  • 感谢您的快速回复。但是有没有更好的方法? Android 内置时钟闹钟也会这样做吗?
  • 我已经搜索了更多来解决这个问题,但我没有找到比这更好的方法。我已经在我的一个应用程序中实现了这个逻辑。
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-07
相关资源
最近更新 更多