Android学习笔记_20140531

1. Activity之间传值

a. MainActivity传值给OtherActivity

  Intent intent = new Intent(this, ResultActivity.class);
  intent.putExtra("name", name);
  startActivity(intent);

-------------------------------------------------------------------

  Intent intent = getIntent();  //获得开启它的Activity的intent
  Bundle bundle =  intent.getExtras();
  String name = (String)bundle.get("name");

 

b. MainActivity获得OtherActivity的值

  //开启一个新的activity,并获取这个activity结束后返回的result
  startActivityForResult(intent, 0);  // 参数0表示的是requestcode,指定是哪个控件发出的请求

 

 //当新开启的activity关闭时调用的方法
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data){}

    //传递数据给调用它的activity
    Intent data = new Intent();
    data.putExtra("number", number);
    setResult(0, data);
    
    // 调用这个方法会关闭当前的activity,然后传递数据给调用者 调用者再执行onActivityResult获得数据
    finish();

 

2. Broadcast Receiver


无序广播:所有广播接收者都会收到发送的广播事件
有序广播:广播接收者按照优先级接收到广播事件,其特点是高优先级的广播接收者可以终止广播事件
指定广播: 显式指定广播接收者,外拨电话调用这个func后,abortBroadcast不能终止这个广播;

 

 广播事件的流程:
 ① 注册广播事件:注册方式有两种,一种是静态注册,就是在AndroidManifest.xml文件中定义,注册的广播接收器必须要继承BroadcastReceiver;另一种是动态注册,是在程序中使用Context.registerReceiver注册,注册的广播接收器相当于一个匿名类。两种方式都需要IntentFIlter。
② 发送广播事件:通过Context.sendBroadcast来发送,由Intent来传递注册时用到的Action。
③ 接收广播事件:当发送的广播被接收器监听到后,会调用它的onReceive()方法,并将包含消息的Intent对象传给它。onReceive中代码的执行时间不要超过5s,否则Android会弹出超时dialog。

 

- abortBroadcast()失败的原因可能是权限太低,被权限高的应用把广播拦截了

- 广播来短信的应用没有执行onReceive方法的问题: 版本的原因

 ① 如果创建了Activity,在2.3和4.0以上版本都可以
② 如果没有创建Activity,2.3版本可以,4.0以上版本需要用户主动开启
broadcast,可以创建一个透明的窗体
③ 获取短信数据库的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值