Android-фон BroadcastReceivers, но динамически создавать

В настоящее время я пытаюсь запустить широковещательные приемники в фоновом режиме моего приложения для 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: они не могут быть созданы динамически.

Есть ли способ динамически создавать широковещательные приемники внутри класса, который запускается в фоновом режиме приложения и срабатывает, когда происходит широковещательная рассылка?


person kxdan    schedule 08.03.2016    source источник
comment
Вы пытались инкапсулировать их в одноэлементный класс, который будет установлен в каждом действии? Используете ли вы какой-либо DI?   -  person aminner    schedule 08.03.2016
comment
Но тогда при закрытии приложения приемники отключались?   -  person kxdan    schedule 08.03.2016
comment
Ах пропустил сохранение, когда приложение закрыто. Единственный способ добиться этого — служба, работающая в фоновом режиме. (Я сейчас работаю над чем-то подобным). Слушатель может хорошо работать для ваших нужд - stackoverflow.com/questions/7659974/ В одном из ответов есть пример, который похож на то, что вы пытаетесь выполнить.   -  person aminner    schedule 08.03.2016