问题描述
- 静态注册的Braodcast在关闭程序的时候不启动,还是Alarmmanager的问题
- manifest
<receiver android:name="".MyBroadcast""> <intent-filter> <action android:name=""com.mine.alarmtestdemo1.myAction"" /> <category android:name=""android.intent.category.DEFAULT"" /> </intent-filter> </receiver>
点击事件发送广播
```public void onClick(View v) {
// TODO Auto-generated method stub
AlarmManager myAlarmManager=(AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent();
intent.setAction(""com.mine.alarmtestdemo1.myAction"");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi=PendingIntent.getBroadcast(context 1 intent PendingIntent.FLAG_UPDATE_CURRENT);
myAlarmManager.set(AlarmManager.RTC_WAKEUP System.currentTimeMillis()+7*1000 pi);
}自定义的myBroadcast``` public void onReceive(Context context Intent intent) { // TODO Auto-generated method stub String action =intent.getAction(); if(action.equals(""com.mine.alarmtestdemo1.myAction"")){ Intent intent1=new Intent(contextGetAcivity.class); intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent1); } }
开着Demo的时候,可以正常,但发送完广播,关闭Demo,然后就没有然后了。。。
莫非是AlarmManager的问题。
求大神帮忙。
解决方案
最终发现是因为在退出的时候,如果清理内存或其它类似能杀死程序进程的都会清除广播。
解决方案二:
onfinish只有虚拟机清理缓存的时候才调,但是这是activity已经onstop了,等多久执行onfinish就不知道,你可以在返回键,或home键手动执行一下onfinish这个函数,把广播发出去。
另外看看mainfest权限,我做的时候是android2.2,后来新版本没测试过,不过建议你看看有没有新的权限条款(如监听进程退出的),有的话就加上。
解决方案三:
Intent intent = new Intent();
intent.setAction(response.getRemoteAction());
intent.putExtras(bundle);
this.context.sendBroadcast(intent);