当手机断电时,Android中的AlarmManagers会丢失所有已注册的闹钟.
我在androID启动时使用以下广播接收器来触发:
public class AlarmBootReceiver extends broadcastReceiver { @OverrIDe public voID onReceive(Context context, Intent intent) { if (intent.getAction().equals("androID.intent.action.BOOT_COMPLETED")) { Cursor alarmCursor = MainActivity.dbHelper.loadAlarms(); // Iterate through every stored alarm and set those alarms. // .... alarmCursor.close(); } }}
>当在系统启动时触发广播接收器的onReceive时,该方法会给出什么上下文参数?我必须知道上下文,因为我需要上下文来取消在该上下文中设置的警报.
>我假设调用MainActivity.dbHelper.loadAlarms()不安全,因为MainActivity未在系统启动时初始化.或者它是否安全,因为dbhelper和loadAlarms()都被初始化并声明为静态?
解决方法:
When the broadcast receiver’s
onReceive
is triggered at system bootup, what context parameter is given to the method? I have to kNow
the context, because I need the context to cancel alarms set in that
context.
在这种情况下,您将在onReceive()中获取全局应用程序Context.但是,这是无关紧要的.你不需要知道.
要在以后取消警报,您将创建一个PendingIntent,您可以使用您想要执行此 *** 作的任何上下文.警报未链接到特定上下文,它们仅链接到特定应用程序.
I am assuming the call to MainActivity.dbHelper.loadAlarms() is not
safe because MainActivity is not initialized in system bootup. Or is
it safe because dbhelper and loadAlarms() are all initialized and
declaredstatic
?
如果dbHelper确实是静态的并且在创建实例时初始化(而不是在onCreate()中),则此调用很好.通常,在活动上调用静态方法是不受欢迎的,因为假设已正确设置Activity,很容易做一些愚蠢的事情.最好将这些静态方法移动到一般的实用程序类,它不是一个Activity,只包含静态方法.这看起来不那么可疑了.
总结以上是内存溢出为你收集整理的android – BroadcastReceivers在收听BOOT_COMPLETED时会收到哪些上下文?全部内容,希望文章能够帮你解决android – BroadcastReceivers在收听BOOT_COMPLETED时会收到哪些上下文?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)