活动(Activity) - 用于表现功能
服务(Service) - 相当于后台运行的 Activity
广播(Broadcast) - 用于发送广播
广播接收器(BroadcastReceiver) - 用于接收广播
Intent - 用于连接以上各个组件,并在其间传递消息
================================================== ========================
BroadcastReceiver:
在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件。下面将详细的阐述如何发送Broadcast和使用BroadcastReceiver过滤接收的过程。
首先:需要把要注册一个广播的过滤器,把符合打件的动作进行拦截。处行处理。
private static final String MENU_DELETE="com.hkrt.delete.user"; private DeleteUserBroadcastReceiver receiver; protected void onResume() { getListUsers(); //在Resume状态下注册一个Broadcast IntentFilter filter = new IntentFilter(MENU_DELETE); receiver = new DeleteUserBroadcastReceiver(); registerReceiver(receiver, filter); super.onResume(); }
注:只要是符合MENU_DELETE的动作就会执行一个动作接收者回调的方法。
第二:编写接收广播接收的实体类。
//提供一个外部Activity触发的入口 class DeleteUserBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { StringBuilder builder = new StringBuilder(); boolean first = true; for(int i=0;i<users.size();i++) { User user = users.get(i); if(user.isSelected()) { if(!first) { builder.append(" or "); } builder.append("user_id = "); builder.append(user.getId()); first = false; } } String deleteAccountIdStr = builder.toString(); Log.d("hkrt debug", builder.toString()); //如果为空字符串就是没有选择删除条目 if(!deleteAccountIdStr.equals("")) { db.open(); db.delete(deleteAccountIdStr, null); db.close(); //再次查询,以刷新ListView getListUsers(); } } }第三:在需要的时候把这个广播发送出去。
Intent deleteUserIntent = new Intent(); deleteUserIntent.setAction(MENU_DELETE); sendBroadcast(deleteUserIntent);