Android – AlarmManager 和 BroadcastReceiver 有问题
Android – Trouble with AlarmManager and BroadcastReceiver
在我的 android 应用程序中,我试图每 5 秒在日志中打印一条消息。我正在使用带有 AlarmManager 和 BroadcastReceiver 的简单配置,这似乎适用于除我之外的所有人。这是广播接收器的代码:
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class ServiceAlarmReceiver extends BroadcastReceiver {
private final String TAG = "com.example.ahsandroidapplication";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Broadcast received");
}
public void setAlarm(Context context){
System.out.println("Service started");
long alertTime = System.currentTimeMillis() + 5000;
Intent alertIntent = new Intent(context, ServiceAlarmReceiver.class);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alertTime, alertTime, PendingIntent.getBroadcast(context, 1, alertIntent,
PendingIntent.FLAG_UPDATE_CURRENT));
}
}
问题是广播接收器没有检测到任何广播。谁能告诉我我做错了什么?感谢任何帮助。
编辑:
四处寻找后,我得出结论,我需要在清单中声明接收者。如果这是问题所在,我该怎么做呢?
改用setRepeating()。专为这些目的而建
好的,所以我在我的清单中定义了接收器,现在它工作正常:
<receiver android:name=".ServiceAlarmReceiver"
android:enabled="true">
<intent-filter>
<action android:name="com.example.ahsandroidapplication.mybroadcast"></action>
</intent-filter>
对于接收器,我添加了行:
alertIntent.setAction("com.example.ahsandroidapplication.mybroadcast");
出于实验目的,我将它设置为每秒关闭一次,它在我的日志中爆炸。现在我会看看如何尝试取消它。
在我的 android 应用程序中,我试图每 5 秒在日志中打印一条消息。我正在使用带有 AlarmManager 和 BroadcastReceiver 的简单配置,这似乎适用于除我之外的所有人。这是广播接收器的代码:
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class ServiceAlarmReceiver extends BroadcastReceiver {
private final String TAG = "com.example.ahsandroidapplication";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Broadcast received");
}
public void setAlarm(Context context){
System.out.println("Service started");
long alertTime = System.currentTimeMillis() + 5000;
Intent alertIntent = new Intent(context, ServiceAlarmReceiver.class);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alertTime, alertTime, PendingIntent.getBroadcast(context, 1, alertIntent,
PendingIntent.FLAG_UPDATE_CURRENT));
}
}
问题是广播接收器没有检测到任何广播。谁能告诉我我做错了什么?感谢任何帮助。
编辑:
四处寻找后,我得出结论,我需要在清单中声明接收者。如果这是问题所在,我该怎么做呢?
改用setRepeating()。专为这些目的而建
好的,所以我在我的清单中定义了接收器,现在它工作正常:
<receiver android:name=".ServiceAlarmReceiver"
android:enabled="true">
<intent-filter>
<action android:name="com.example.ahsandroidapplication.mybroadcast"></action>
</intent-filter>
对于接收器,我添加了行:
alertIntent.setAction("com.example.ahsandroidapplication.mybroadcast");
出于实验目的,我将它设置为每秒关闭一次,它在我的日志中爆炸。现在我会看看如何尝试取消它。