如何停止在广播接收器中触发的重复警报?当我们取消注册广播接收器时如何停止它?
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);
如果您有任何疑问,请告诉我们。
我的代码:
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);
如果您有任何疑问,请告诉我们。