【发布时间】:2013-12-23 04:04:13
【问题描述】:
我是新来的,所以我希望我的问题是正确的。提前致谢!
我的问题是:
BroadcastReceiver 被 AlarmManager 以这种方式通过同一 BroadcastReceiver 内部的方法调用:
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, Receiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis(), 5000, pi);
onRecieve 一直有效,直到我将 MainActivity 的方法放在那里。当调用代码时,每次AlarmManager 尝试启动 onReceive 时我都会收到此错误:
12-22 21:56:01.020: W/BroadcastQueue(2192): Unable to launch app com.example/10000 for broadcast Intent { flg=0x14 cmp=com.example/.Receiver (has extras) }: process is bad
如果我在 BroadcastReceiver 上创建一个接收 MainActivity 的方法,我可以在 BroadcastReceiver 的该方法中调用来自 MainActivity 的方法:
public void SetHandler(Context context, MainActivity main) {
MainActivity mainactivity;
this.mainactivity = main;
mainactivity.method();
}
但我不明白如何在 BroadcastReceiver 的 onReceive 中调用它们。
onRecieve 上的mainactivity.method() 不起作用,我不知道是因为它没有被AlarmManager 附加到MainActivity 还是因为我做错了。
如果问题是由于Activity与BroadcastReceiver的附件问题,那是怎么做的呢? 如果这不是问题,那会是什么?
【问题讨论】:
标签: android broadcastreceiver alarmmanager