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()
-这会触发广播。如果要触发服务,您需要使用。

谢谢,实际上这是一种不同的设计,但它正在工作!谢谢,实际上这是一种不同的设计,但它的工作!