我正在实现一个 android 应用程序,我想在其中启动设备后使用 alarmManager 启动服务。但是启动后,alarmManager 被执行但我的服务正在运行。我怎么解决它?这是我实施的:
In the manifest :
<receiver
android:name=".Services.OnBootBroadcast"
android:enabled="true"
android:exported="true"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
//My broadcast receiver class
public class OnBootBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) {
// Start your service here
// Toast.makeText(context, "The phone is onBoot mode", Toast.LENGTH_SHORT).show();
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
// Create an intent that will be used to trigger the alarm event
Intent alarmIntent = new Intent(context, TimeService.class);
// Create a PendingIntent object using the PendingIntent.getBroadcast() method
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0);
// Set the alarm using the AlarmManager.set() method
long alarmTime = System.currentTimeMillis() + 60000; // Trigger alarm after 1 minute
long interval = 10 * 60 * 1000; // Repeat every 10 minutes
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 5000, interval, pendingIntent);
Log.d("TAG", "onReceive: the alarm is being triggered");
}
}
}