Android 安卓广播接收机
我是android新手。我想知道Android 安卓广播接收机,android,Android,我是android新手。我想知道Intent和BroadcastReceiver之间的区别。我对BroadcastReceiver比对Intent更困惑 请帮帮我。简单的代码会很有帮助。好的,我将用一个例子来解释它 假设我想创建一个应用程序,从它的网页检查地铁状态。如果地铁不正常,我还需要一个系统通知 我将: 显示结果的活动 一项服务,用于检查地铁是否正常运行,如果不正常则显示通知 一个广播接收器呼叫报警接收器,每15分钟呼叫一次服务 让我向您展示一些代码: /* AlarmReceiver
Intent
和BroadcastReceiver
之间的区别。我对BroadcastReceiver
比对Intent
更困惑
请帮帮我。简单的代码会很有帮助。好的,我将用一个例子来解释它 假设我想创建一个应用程序,从它的网页检查地铁状态。如果地铁不正常,我还需要一个系统通知 我将:
- 显示结果的
活动
- 一项
,用于检查地铁是否正常运行,如果不正常则显示通知服务
- 一个
呼叫广播接收器
,每15分钟呼叫一次服务报警接收器
/* AlarmReceiver.java */
public class AlarmReceiver extends BroadcastReceiver {
public static final String ACTION_REFRESH_SUBWAY_ALARM =
"com.x.ACTION_REFRESH_SUBWAY_ALARM";
@Override
public void onReceive(Context context, Intent intent) {
Intent startIntent = new Intent(context, StatusService.class);
context.startService(startIntent);
}
}
说明:
正如你所见,你可以设置一个警报。当收到警报时,我们使用意图
启动服务
。基本上,intent
是一个可以有动作的消息,一个序列化的东西
public class StatusService extends Service {
@Override
public void onCreate() {
super.onCreate();
mAlarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intentToFire = new Intent(AlarmReceiver.ACTION_REFRESH_ALARM);
mAlarmIntent = PendingIntent.getBroadcast(this, 0, intentToFire, 0);
}
@Override
public void onStart(Intent intent, int arg1) {
super.onStart(intent, arg1);
Log.d(TAG, "SERVICE STARTED");
setAlarm();
Log.d(TAG, "Performing update!");
new SubwayAsyncTask().execute();
stopSelf();
}
private void setAlarm() {
int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
mAlarms.setInexactRepeating(alarmType, SystemClock.elapsedRealtime() + timeToRefresh(),
AlarmManager.INTERVAL_HALF_DAY, mAlarmIntent);
}
}
说明:
服务
启动并:
- 为下次通话设置闹钟。(检查它的使用意图。只是一条消息)
- 调用负责更新通知
活动的
异步任务
AsyncTask
没有意义,但是当它完成时,会调用:
private void sendSubwayUpdates(LinkedList<Subway> subways) {
Intent intent = new Intent(NEW_SUBWAYS_STATUS);
intent.putExtra("subways", subways);
sendBroadcast(intent);
}
private void sendSubwayUpdates(链接列表地铁){
意向意向=新意向(新地铁状态);
意向。额外收费(“地铁”,地铁);
发送广播(意图);
}
这将创建一个新的Intent
,带有特定的new\u SUBWAYS\u STATUS
操作,将其放入Intent中,然后sendBroadcast
。如果有人对获取这些信息感兴趣,它将有一个接收器
我希望我说清楚了
几天前,有人用一种很酷的方式解释了广播和意图。
有人想分享他的啤酒,所以他发了一个广播
有意向的行动:“免费啤酒”和额外的“一杯啤酒”。API声明:
BroadcastReceiver
是用于接收由sendBroadcast()
发送的意图的代码的基类
意图是对要执行的操作的抽象描述
因此,
BroadcastReceiver
只是一个响应意图的活动。您可以发送自己的广播,甚至安卓设备也可以发送这些系统范围的广播,包括电池电量不足或设备刚刚启动等情况。我觉得广播接收器作为服务的一部分确实会感到困惑。但是,我已经多次使用它们来生成简单的活动间消息,比如发送到后堆栈中的消息。使用它根本不需要任何服务。“嘿,用户发生了变化。响应它!”BroadcastReceiver不是活动!你确定我们可以用地铁报警器测试它吗?请看这个链接