如果我两次发送相同的待处理意图会怎样?

时间:2017-04-28 05:02:52

标签: java android android-pendingintent

我正在尝试发送两个未决意图让我说我在1分钟后发送了我的第一个意图,并在2分钟后发送了我的第二个意图。我对它们使用相同的动作。 发生的事情只是第二个意图有效但2分钟后也是如此。

 AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        Intent intent;
        intent = new Intent(ALARM_ACTION_NAME);
        if(val1) {

            intent.putExtra("TYPE","SILENT");
        }
        else {

            intent.putExtra("TYPE", "RING" );

        }


        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 2,intent, 0);

广播接收者如下所示......

if(ALARM_ACTION_NAME.equals(intent.getAction())){
            Log.i("this", intent.getStringExtra("TYPE"));
            if(intent.getStringExtra("TYPE").equals("SILENT")) {
                Toast.makeText(context, "illumy set the phone to Silent", Toast.LENGTH_LONG).show();
                AudioManager am = (AudioManager) context.getSystemService(context.AUDIO_SERVICE);
                am.setStreamVolume(AudioManager.STREAM_RING, 0, 0);
                am.setStreamVolume(AudioManager.STREAM_MUSIC, 0 , 0);

            }
            else if (intent.getStringExtra("TYPE").equals("RING")){

                Toast.makeText(context, "Phone set the phone to Ring", Toast.LENGTH_LONG).show();
                AudioManager am = (AudioManager) context.getSystemService(context.AUDIO_SERVICE);
                am.setStreamVolume(AudioManager.STREAM_RING, 100, 0);
                am.setStreamVolume(AudioManager.STREAM_MUSIC, 30 , 0);
            }
        }

1 个答案:

答案 0 :(得分:1)

最后的意图将始终由之前替换。所以有两个解决方案,一个是你定义多个动作,另一个是(最好一个)管理DB中的所有呼叫。它意味着在执行后首先调度最低即将召唤的呼叫,删除该呼叫并再次获得即将到来的最低呼叫。