如何停止在广播接收器中触发的重复警报?当我们取消注册广播接收器时如何停止它?

How to stop a repeating alarm which was triggered in a Broadcast receiver? How to stop it when we unregister the broadcast receiver?

我的代码:

public class StartupReceiver extends BroadcastReceiver {

static final String TAG = "SR";

final int startupID = 1111111;
 AlarmManager alarmManager;
Intent i7 ;
PendingIntent ServiceManagementIntent;
@Override
public void onReceive(Context context, Intent intent) {

    alarmManager = (AlarmManager) context
                .getSystemService(Context.ALARM_SERVICE);
    try{

        System.out.println("is Start Up Reciever started????");
             i7 = new Intent(context, CheckRunningApplicationReceiver.class);
             ServiceManagementIntent = PendingIntent.getBroadcast(context,
                    startupID, i7, 0);
            alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME,
                    SystemClock.elapsedRealtime(), 
                    5000, ServiceManagementIntent);


        } catch (Exception e) {
            Log.i(TAG, "Exception : "+e);
        }

    }

   }

CheckRunningApplicationReceiver.java

public class CheckRunningApplicationReceiver extends BroadcastReceiver {

public final String TAG = "CRAR"; // CheckRunningApplicationReceiver

@Override
public void onReceive(Context aContext, Intent anIntent) {

    //code....  


  }

 }

主要Activity:

public class Main extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    getBaseContext().getApplicationContext().sendBroadcast(
            new Intent("StartupReceiver_Manual_Start"));
}

清单文件:

    <receiver android:name=".StartupReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="StartupReceiver_Manual_Start" />
        </intent-filter>
    </receiver>

问题 1: 我们如何停止上面启动的接收器 - StartupReceiver? 当我取消注册 StartupReceiver 时,我怎样才能停止重复闹钟? 有人可以帮我解决这个问题吗?

您必须使用 AlarmManager 和 AlarmId 取消警报。我只是给你示例代码,请根据你的要求更改它。

 AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

    Intent intent=new Intent(this,AlarmManagerBroadcast.class);
    PendingIntent pi=PendingIntent.getBroadcast(this,alarmid,intent,0);
    alarmManager .cancel(pi);

如果您有任何疑问,请告诉我们。