zoukankan      html  css  js  c++  java
  • android 之 Broadcast(广播) BroadcastReceiver(广播接收者)

    在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver 
    活动(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);


  • 相关阅读:
    使用httpVueLoader加载vue单页面不用脚手架的方法
    uniapp微信小程序登录,获取手机号,支付,分享,消息订阅功能
    uniapp UI库 uview
    vue change阻止默认事件已解决
    elementui 添加和修改使用同一个表单清除表单数据和验证!!
    uniapp 分类实现多条件筛选
    uniapp 小程序订阅消息爬坑记
    时间选择器datetimerpicker封装使用(非脚手架)
    elementui 表单(添加和修改使用同一个)重置 && 开关(关键点)
    uniapp 小程序订阅消息
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218332.html
Copyright © 2011-2022 走看看