Использование Broadcast Reciever внутри Сервиса - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь использовать Broadcast Receiver внутри класса Service. Но метод onReceive в Broadcast Receiver не вызывается. Я не знаю, где возникает проблема. Ниже приведен мой код,


public class CallService extends Service {
    CallReceiver callReceiver=null;
    String TAG=CallService.class.getSimpleName();

    @Override
    public void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);
        CallReceiver callReceiver=new CallReceiver();
        IntentFilter intentFilter=new IntentFilter();
        intentFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
        intentFilter.addAction("a");
        this.registerReceiver(callReceiver,intentFilter);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Log.d(TAG, "onCreate: started in call service");
        CallReceiver callReceiver=new CallReceiver();
        IntentFilter intentFilter=new IntentFilter();
        intentFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
        intentFilter.addAction("a");
        this.registerReceiver(callReceiver,intentFilter);

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        this.unregisterReceiver(callReceiver);
    }





    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
    public class CallReceiver extends BroadcastReceiver{


        @Override
        public void onReceive(Context context, Intent intent) {
            if(intent.getAction().equalsIgnoreCase("a"))
                Log.d("CallService", "onReceive: aa");
        }
    }
}

Я добавил действие в фильтр намерений в onCreate и onStart. После регистрации он будет go метод onReceive и должен проверить действие. Я прав? Но в моем случае метод onReceive не вызывается. Кто-нибудь поможет мне найти лучшее решение.

1 Ответ

0 голосов
/ 25 марта 2020

Я имею в виду, что вы не должны использовать приемник при обслуживании, поскольку он обычно использует, вы должны создать приемник для вызова службы, если вы хотите стабильную службу для обновления, вы можете использовать службу намерения. Но если вы используете приемник для системных обновлений, таких как wifi off / on или et c, вы можете создать приемник и зарегистрироваться из манифеста, чтобы он всегда работал, и вы могли вызывать сервис из него или делать свой код внутри при получении метода

...