Android BroadcastReceiver onReceive() called twice on android 4.0

前端 未结 15 2288
梦谈多话
梦谈多话 2020-12-29 20:38

I faced to one problem on android 4.0.3 (on 4.1.2 it works fine). I have in my Activity BroadcastReceiver. When I send a broadcast, method onReceive() called always twice. P

15条回答
  •  一向
    一向 (楼主)
    2020-12-29 20:50

    I faced a similar problem, but my BroadcastReceiver was static because I wanted to use it as an inner class, what I did was to register the receiver (in order to create the static instance), then unregister the same receiver, that made it be called once which is by the AlarmManager timer, ofcourse code is always much explanatory :

    public void setAlarm(Context context) {
        Log.d("EX", "Alarm SET !!");
    
        Intent intent = new Intent("com.example.START_ALARM");
        IntentFilter myIf = new IntentFilter("com.example.START_ALARM");
        PendingIntent sender = PendingIntent.getBroadcast(context, 192837,
                intent, PendingIntent.FLAG_UPDATE_CURRENT);
        myBroadcastReceiver mbr = new myBroadcastReceiver();
        // ****Here goes the trick.****
        context.registerReceiver(mbr, myIf);
        context.unregisterReceiver(mbr);
    
        // Get the AlarmManager service
        AlarmManager am = (AlarmManager) context
                .getSystemService(Context.ALARM_SERVICE);
        Long firstTime = SystemClock.elapsedRealtime()
                + TimeUnit.SECONDS.toMillis(70);
        am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,
                TimeUnit.SECONDS.toMillis(70), sender);
    }
    

提交回复
热议问题