В настоящее время я пытаюсь запустить широковещательные приемники в фоновом режиме моего приложения для Android, для которого мне сказали использовать службу событий. В настоящее время мои широковещательные приемники работают нормально, если вы участвуете в деятельности, в которой они зарегистрированы.
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_BATTERY_LOW)) {
Toast.makeText(arg0, "Battery's dying!!", Toast.LENGTH_LONG).show();
Log.e("LOW", "LOW");
intent = null;
}else if(intent.getAction().equals(Intent.ACTION_POWER_DISCONNECTED)) {
Toast.makeText(arg0, "Battery's discharging!!", Toast.LENGTH_LONG).show();
Log.e("discharge", "discharge");
intent = null;
}else if(intent.getAction().equals(Intent.ACTION_POWER_CONNECTED)) {
Toast.makeText(arg0, "Battery's charging!!", Toast.LENGTH_LONG).show();
Log.e("charge", "charge");
intent = null;
}else if(intent.getAction().equals(Intent.ACTION_BATTERY_OKAY)) {
Toast.makeText(arg0, "Battery's okay!!", Toast.LENGTH_LONG).show();
Log.e("OKAY", "OKAY");
intent = null;
}
}
};
в OnCreate:
registerReceiver(this.mBatInfoReceiver,
new IntentFilter(Intent.ACTION_BATTERY_LOW));
registerReceiver(this.mBatInfoReceiver,
new IntentFilter(Intent.ACTION_BATTERY_OKAY));
registerReceiver(this.mBatInfoReceiver,
new IntentFilter(Intent.ACTION_POWER_DISCONNECTED));
registerReceiver(this.mBatInfoReceiver,
new IntentFilter(Intent.ACTION_POWER_CONNECTED));
Несмотря на проблемы, возникающие с утечкой фильтров намерений при создании их при создании, моя текущая проблема заключается в том, что когда я меняю активность, они больше не запускаются, я прочитал следующее: http://www.vogella.com/tutorials/AndroidBroadcastReceiver/article.html#startingservices_alarmmanager
Что, поместив их в IntentService и запустив эту службу, они будут работать последовательно, однако это включает в себя регистрацию получателей в манифесте, что вызывает у меня проблемы в том, что мое приложение планирует позволить пользователю прослушивать определенные события IE: они не могут быть созданы динамически.
Есть ли способ динамически создавать широковещательные приемники внутри класса, который запускается в фоновом режиме приложения и срабатывает, когда происходит широковещательная рассылка?