【发布时间】:2013-10-09 08:50:30
【问题描述】:
我正在使用广播接收器来侦听通过 onclick 方法触发的意图服务。这一切都很好,但是如果屏幕旋转,我必须在 onPause 中取消注册(我也在 onDestory 中尝试过),然后在 onResume 中重新注册广播接收器。
我的问题是,在广播接收器未注册/注册期间,intentservice 可以将其广播发送回说它已完成,然后这意味着广播接收器仍然坐在那里等待已经发生的事情。
我曾尝试在广播之前在 intentservice 中使用睡眠,但这绝不是完全证明,好像设备再次旋转存在时间问题。
我从 onClick 启动并注册意图服务和广播接收器,如下所示:
Intent intentMyIntentService = new Intent(myclass.this,myservice.class);
startService(intentMyIntentService);
mybroadcastreciver = new br();
IntentFilter intentFilter = new IntentFilter(myservice.ACTION_ServiceE);
intentFilter.addCategory(Intent.CATEGORY_DEFAULT);
registerReceiver(mybroadcastreciver, intentFilter);
我的 br 方法是广播接收器,它作为它的 onReceive 方法,我使用 onSaveInstanceState 方法处理配置更改,然后检查 onCreate 以查看是否 Bundle != null 然后检索设置的布尔值是否取决于使用它发送给接收者的广播来完成意图服务。
如果屏幕不旋转,这一切都会起作用。但是我知道还有其他方法可以处理屏幕旋转,但我正在编写一个从 API 8 到 17 工作的应用程序。
谢谢
提姆
【问题讨论】:
标签: android sdk broadcastreceiver intentservice