134_Activity给Service发消息


ActivityService发消息


还是用Messenger

直接上代码

 

23. public class MainActivity extends Activity {

24. private Messenger messenger;

25. //将该 Handler发送Service

26. private Messenger mOutMessenger = new Messenger(new OutgoingHandler());

27.

 


创建了成员变量mOutMessenger

 

 

 

28. @Override

29. protected void onCreate(Bundle savedInstanceState) {

30. super.onCreate(savedInstanceState);

31. setContentView(R.layout.activity_main);

32. }

 

onCreate方法

 

 

 

33. // 绑定服务

34. public void click1(View view) {

35. Intent intent = new Intent(this, MessengerService.class);

36. ServiceConnection conn = new MyServiceConnection();

37. bindService(intent, conn, Service.BIND_AUTO_CREATE);

38. }

39.

 

创建intent,创建MyServiceConnection对象

绑定服务,bindService(intent,conn,Service.BIND_AUTO_CREATE);

 

 

 

40. // 发送消息

41. public void click2(View view) throws RemoteException {

42. if (messenger == null) {

43. Toast.makeText(this, "服务不可用!", Toast.LENGTH_SHORT).show();

44. return;

45. }

 

如果messenger为空

吐司

 

 

 

46. Message message = new Message();

47. message.obj="长江长江我是黄河";

48. message.what =0;

49. messenger.send(message);

50.

51. }

 

创建message,

messenger来发送message;

 

 

 

 

52.

53. class OutgoingHandler extends Handler{

54. @Override

55. public void handleMessage(Message msg) {

56. Log.d("tag", msg.toString());

57. }

58. }

59.

60. class MyServiceConnection implements ServiceConnection {

61.

62. @Override

63. public void onServiceConnected(ComponentName name, IBinder service) {

64. Toast.makeText(MainActivity.this, "连接成功!", Toast.LENGTH_SHORT).show();

65. messenger = new Messenger(service);

66. Message message=new Message();

67. message.what = 1;

68. //Activity 绑定 Service的时候给Service发送一个消息,该消息的obj属性是一个Messenger对象

69. message.obj = mOutMessenger;

70. try {

71. messenger.send(message);

72. } catch (RemoteException e) {

73. e.printStackTrace();

74. }

75. }

 

新建类MyServiceConnection实现ServiceConnection

新建messenger对象,创建message

messenger发送message;

 

 

 

76.

77. @Override

78. public void onServiceDisconnected(ComponentName name) {

79. Toast.makeText(MainActivity.this, "连接已经断开!", Toast.LENGTH_SHORT).show();

80. }

81.

82. }

83.

84. }

 

 

 

 

MainActivity中代码总结

 

看着很复杂

其实认真仔细地看一遍,很简单

 

自定义2个类

1OutgoingHandler继承Handler

1MyServiceConnection实现ServiceConnection

 

OutgoingHandler里面

覆写一下handleMessage方法

 

MyServiceConnection里面

覆写一下onServiceConnected,onServiceDisconnected方法

一个就是服务连接成功,一个就是服务连接断开

 

那么就在onServiceConnected服务连接成功后给service发送一个消息

messenger=new Messenger(service);

messenger.send(message);

就这么简单

 

然后来两个方法

click1里面绑定服务

bindService

 

click2里面用messengerservice发消息

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值