作者icools (我的MSN上上下下...)
看板AndroidDev
标题Re: [问题] Broadcast Receiver
时间Mon Mar 31 22:19:33 2014
※ 引述《fake01 (假面超人)》之铭言:
: 大家好
: 小弟目前再用BroadcastReceiver,想请问不同的activity都会要使用到
: 广播来接收讯息,那这个时候就很麻烦,因为要在每个activity都要宣告一次
: public class Receiver extends BroadcastReceiver.....
: 很麻烦,是不是可以直接写一个class,然後其他activity 就读取这个class就好
: 重点在class里面这行
: public void onReceive(Context context, Intent intent)
: 不知道其他activity 如何给参数.. 才可以共用
: 麻烦各位了
: 谢谢大家
想了一下如果要利用一个Brocast收到讯息後对其他Activity 通知的话
1.如果想利用一个BrocastReciver来达成的话...
会建议先写一个抽象类别 BaseActivity.java
里面宣告一个变数
public static Handle mHanlder ... ;
在宣告一个static function
public static void sendMessage(Message msg){
// ...对 mHanlder send message
}
2.Receiver.java在接收到广播後透过
BaseActivity.sendMessage(...);
传递要执行的参数
3.接着就是在每个Actitvity要继承BaseActivity
在onCreate内去产生Handler覆盖hanldeMessage方法
如果在handleMessage内做的事情会是一样的就在BaseActivity内写成共用方法
public void onCreate(...){
...
mHander = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
updateTitle();
break;
}
};
}
}
以上没实作测试,不过我猜应该可以达到你的目的
另一个方法我觉得比较好
就是在BaseActivity内宣告一个 BrocastReciver mReciver ;
在onCreate跟 onPause自己处理注册机制
这样所有的Activity都可以收到通知,做法感觉也比较正统
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.230.138.251
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1396275575.A.018.html
1F:推 tac0wu:onResume onPause? 03/31 22:22
2F:推 tac0wu:另外第一个做法 要小心处理 不然会memory leak 03/31 22:39
3F:推 fake01:谢谢指教,我会试试看 04/04 12:09
4F:→ fake01:今天放假要出去玩(喂 04/04 12:10