Android 安卓:警报未启动服务
要求:反复启动后台服务 设计:使用Android 安卓:警报未启动服务,android,service,android-service,alarmmanager,android-alarms,Android,Service,Android Service,Alarmmanager,Android Alarms,要求:反复启动后台服务 设计:使用AlarmManager 我所做的: <service android:name=".MyService" android:exported="false" > </service> AlarmManager alarm = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(context,
AlarmManager
我所做的:
<service
android:name=".MyService"
android:exported="false" >
</service>
AlarmManager alarm = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, MyService.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), SERVICE_ALARM_INTERVAL, pendingIntent);
问题:未执行Toast
消息和Log
打印
我做错了什么
谢谢,试试这个
AndroidManifest.xml
<receiver android:name=".AlarmReceiver">
<intent-filter>
<action android:name="com.example.project.AlarmReceiver" />
</intent-filter>
</receiver>
AlarmReceiver.java
Intent intent = new Intent(context, AlarmReceiver.class);
intent.setAction("com.example.project.AlarmReceiver");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), SERVICE_ALARM_INTERVAL, pendingIntent);
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Alarm received!!!!!", Toast.LENGTH_LONG).show();
}
}
将使用如上所示的广播接收器调用AlarmManager
AndroidManifest.xml
<receiver android:name=".AlarmReceiver">
<intent-filter>
<action android:name="com.example.project.AlarmReceiver" />
</intent-filter>
</receiver>
AlarmReceiver.java
Intent intent = new Intent(context, AlarmReceiver.class);
intent.setAction("com.example.project.AlarmReceiver");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), SERVICE_ALARM_INTERVAL, pendingIntent);
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Alarm received!!!!!", Toast.LENGTH_LONG).show();
}
}
将使用如上所示的广播接收器调用AlarmManager,您正在使用的是
PendingEvent.getBroadcast()
-这将触发广播。如果要触发服务,则需要使用。您使用的是pendingent.getBroadcast()
-这会触发广播。如果要触发服务,您需要使用。谢谢,实际上这是一种不同的设计,但它正在工作!谢谢,实际上这是一种不同的设计,但它的工作!