为了账号安全,请及时绑定邮箱和手机立即绑定

广播接收器不触发

广播接收器不触发

www说 2021-06-08 17:47:10
我正在编写一个应用程序,一旦它到达某个日期/时间就会触发一个特定的方法。但是,我的广播接收器没有启动……我可以看到警报已设置。我在活动中的方法: 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 回答

?
MM们

TA贡献1886条经验 获得超2个赞

您的代码似乎没有任何问题(我复制了该代码段并让 Android Studio 生成了一个 BroadcastReceiver,我android:process=":remote"像您一样为其设置了广播接收器)。

当我运行应用程序时,会BroadcastReceiver触发,但是当我在 Logcat 设置(右侧)中选择“无过滤器”时,我只能看到相应的 Logcat 条目,而不是当我选择“仅显示选定的应用程序”时。

发生这种情况是因为您使用android:process=":remote". BroadcastReceiver 将在“主”应用程序进程之外的另一个进程中运行,因此“RING RING”将出现在另一个进程 ID 下。


//img1.sycdn.imooc.com//60dc264c0001cd9109130146.jpg

查看完整回答
反对 回复 2021-06-30
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信