我正在编写一个应用程序,一旦它到达某个日期/时间就会触发一个特定的方法。但是,我的广播接收器没有启动……我可以看到警报已设置。我在活动中的方法: private void setAlarm(Date date){ Intent activate = new Intent(this, Alarm.class); AlarmManager alarms ; Calendar cal = new GregorianCalendar(); cal.setTimeInMillis(date.getTime()); PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, activate, 0); alarms = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); Log.d("ALARM","Setting alarm"); alarms.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), alarmIntent); Log.d("ALARM","Setting time "+cal.getTimeInMillis()); }我的广播接收器:public class Alarm extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.d("ALARM", "RING RING"); }}我在<application>标签中的清单:<receiver android:name=".Alarm" android:process=":remote" > <intent-filter> <action android:name="com.package.feature.subpackage.arrangealarm.ALARM_ACTION"/> </intent-filter> </receiver>有谁知道为什么这不开火?
1 回答
![?](http://img1.sycdn.imooc.com/545869470001a00302200220-100-100.jpg)
MM们
TA贡献1886条经验 获得超2个赞
您的代码似乎没有任何问题(我复制了该代码段并让 Android Studio 生成了一个 BroadcastReceiver,我android:process=":remote"
像您一样为其设置了广播接收器)。
当我运行应用程序时,会BroadcastReceiver
触发,但是当我在 Logcat 设置(右侧)中选择“无过滤器”时,我只能看到相应的 Logcat 条目,而不是当我选择“仅显示选定的应用程序”时。
发生这种情况是因为您使用android:process=":remote"
. BroadcastReceiver 将在“主”应用程序进程之外的另一个进程中运行,因此“RING RING”将出现在另一个进程 ID 下。
添加回答
举报
0/150
提交
取消