Messenger信使
2016-04-18 15:37
281 查看
* Messenger用于Activity和Service之间消息传递
需求:activity来绑定服务,绑定成功后,将数据发送给service,service收到消息后,再发送信息给activity.
需求:activity来绑定服务,绑定成功后,将数据发送给service,service收到消息后,再发送信息给activity.
public class MainActivity extends AppCompatActivity { private Intent intent; private MyServiceConnection serviceConnection; private Messenger messenger;//信使。 private Messenger activity_messenger;// private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { String str = (String) msg.obj; System.out.println(str); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); activity_messenger = new Messenger(handler); //绑定服务。 intent = new Intent(this,MyService.class); serviceConnection = new MyServiceConnection(); bindService(intent, serviceConnection,BIND_AUTO_CREATE); } public void click(View view){ if(messenger!=null){ Message msg = new Message(); msg.obj = "我是activity发送过来的消息"; msg.replyTo =activity_messenger; try { messenger.send(msg); } catch (RemoteException e) { e.printStackTrace(); } } } class MyServiceConnection implements ServiceConnection{ @Override public void onServiceConnected(ComponentName name, IBinder service) { //得到信使。service的信使. messenger = new Messenger(service); } @Override public void onServiceDisconnected(ComponentName name) { } } }
public class MyService extends Service { private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { String str = (String) msg.obj; System.out.println(str); //发送消息。 Messenger activity_messenger = msg.replyTo; Message message = new Message(); message.obj="我是service发送过来的消息"; try { activity_messenger.send(message); } catch (RemoteException e) { e.printStackTrace(); } } }; @Override public IBinder onBind(Intent intent) { Messenger messenger = new Messenger(handler); return messenger.getBinder(); } }
相关文章推荐
- rem 回家测试
- Post同时上传多张图片和数据实例
- 最短路径问题 eg.城市平乱
- sql server arcgis计算点是否在范围内
- github优秀项目包含绘图等
- tail -f 不好用? 用法小解析
- 使用Squid做代理服务器,Squid单网卡透明代理配置详解(转)
- 人工智能60年:人工智能音乐即将问世
- Ubuntu常用操作
- heroku 部署flask应用
- 使用Squid做代理服务器,Squid单网卡透明代理配置详解(转)
- [iOS]图片高清度太高, 导致内存过大Crash
- 点击得到QTableWidget中任意位置QPushButton的行列信息
- window.clearInterval与window.setInterval的用法
- commit 与do_key('commit_form')区别
- mfc获取自身版本号
- 接口(interface)原来是可以被继承(extends)的 2007-07-20 10:19:00
- 17、责任链模式(ChainofResponsibility)
- poj 2724 最大独立集
- 欢迎使用CSDN-markdown编辑器