Activity之间实时通信

要求:两个Activity ,A和B:在A中启动B,B中的消息要实时传递给A

 开发winform的时候多幸福,在Form中声明一个Public属性或方法,直接调用就好了, Android中却没这么简单,这Activity封装的太严实了,根本找不到入口! 

查了很多资料,总结下Activity之间的交互,下大致有下面几种办法:

1.startActivityForResult,缺点:只能在返回后获取B的信息(不能实现) 
2.intent.putExtra:缺点:单向传递(不能实现) 
3.开启Service:缺点:额外的系统开销(OK实时性很好) 
4.定时查询:SharedPrefrence,Sqlite,文本文件, 缺点:没有实时性(不提) 
5.广播:好像不太适合这个场景 
6.最灵活的方式是使用回调,实现很简单: 

 

  1.定义一个接口

public interface Event { 
    public void onSomethingHappened(String msg); 
} 
2.定义一个事件管理类,用来绑定事件和引发事件(注意必须是静态属性和方法):
public class EventManager { 
    private static Event mEvent; 
    public static void setEventListener(Event nm){ 
        mEvent = nm; 
    } 
    public static void raiseEvent(String msg){ 
        mEvent.onSomethingHappened(msg); 
    } 
}
3.在A中绑定事件并实现Event接口:
EventManager.setEventListener(event); 
private Event event = new Event() {
    @Override 
    public void onSomethingHappened(String msg) { 
        TextView tv = (TextView) findViewById(R.id.mainTextView); 
        tv.setText(msg); 
    } 
}; 

4.在B中调用: 

EventManager.raiseEvent(“123456789”);

 

 

 

 

 

 

 

 

 

 

 

 
 
 
 
 
 
 
 

 

 

 

 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值