zoukankan      html  css  js  c++  java
  • 使用Messenger 从Activity发送数据到service 通过后台计算结果Log输出;

     1 package com.lixu.messenger;
     2 
     3 import android.app.Activity;
     4 import android.app.Service;
     5 import android.content.ComponentName;
     6 import android.content.Intent;
     7 import android.content.ServiceConnection;
     8 import android.os.Bundle;
     9 import android.os.IBinder;
    10 import android.os.Message;
    11 import android.os.Messenger;
    12 import android.os.RemoteException;
    13 import android.util.Log;
    14 import android.view.View;
    15 import android.view.View.OnClickListener;
    16 import android.widget.Button;
    17 
    18 public class MainActivity extends Activity implements OnClickListener {
    19     private ServiceConnection sc;
    20     private Messenger sender;
    21 
    22     @Override
    23     protected void onCreate(Bundle savedInstanceState) {
    24         super.onCreate(savedInstanceState);
    25         setContentView(R.layout.activity_main);
    26 
    27         Button btn1 = (Button) findViewById(R.id.btn1);
    28         Button btn2 = (Button) findViewById(R.id.btn2);
    29 
    30         btn1.setOnClickListener(this);
    31         btn2.setOnClickListener(this);
    32 
    33     }
    34 
    35     public void bindService() {
    36         sc = new ServiceConnection() {
    37 
    38             @Override
    39             public void onServiceDisconnected(ComponentName name) {
    40 
    41             }
    42 
    43             @Override
    44             public void onServiceConnected(ComponentName name, IBinder service) {
    45                 sender = new Messenger(service);
    46             }
    47 
    48         };
    49         Intent intent = new Intent(this, MyMessenger.class);
    50         bindService(intent, sc, Service.BIND_AUTO_CREATE);
    51         Log.e("开始绑定", "绑定成功");
    52 
    53     }
    54 
    55     public void startService() {
    56         Intent it = new Intent(this, MyMessenger.class);
    57         startService(it);
    58         Message msg = new Message();
    59         int[] num = { 309, 713 };
    60         msg.obj = num;
    61         msg.what = Changliang.WHAT;
    62         try {
    63             sender.send(msg);
    64         } catch (RemoteException e) {
    65             e.printStackTrace();
    66         }
    67 
    68     }
    69 
    70     @Override
    71     public void onClick(View v) {
    72         switch (v.getId()) {
    73         case R.id.btn1:
    74             bindService();
    75             break;
    76         case R.id.btn2:
    77             startService();
    78             break;
    79 
    80         default:
    81             break;
    82         }
    83 
    84     }
    85 
    86     @Override
    87     protected void onDestroy() {
    88         super.onDestroy();
    89         unbindService(sc);
    90         Intent it = new Intent(this, MyMessenger.class);
    91         stopService(it);
    92 
    93     }
    94 }
     1 package com.lixu.messenger;
     2 
     3 import android.app.Service;
     4 import android.content.Intent;
     5 import android.os.Handler;
     6 import android.os.IBinder;
     7 import android.os.Message;
     8 import android.os.Messenger;
     9 import android.util.Log;
    10 
    11 public class MyMessenger extends Service {
    12     private int a;
    13     private int b;
    14     private Messenger mMessenger;
    15     
    16     @Override
    17     public void onCreate() {
    18         super.onCreate();
    19         Handler handler = new Handler() {
    20             @Override
    21             public void handleMessage(Message msg) {
    22                 super.handleMessage(msg);
    23                 if (msg.what == Changliang.WHAT) {
    24                     int[] nums = (int[]) msg.obj;
    25                     a = nums[0];
    26                     b = nums[1];
    27                 }    
    28             }
    29         };
    30         mMessenger=new Messenger(handler);
    31     }
    32 
    33 
    34     @Override
    35     public int onStartCommand(Intent intent, int flags, int startId) {
    36         int numshe = a + b;
    37         Log.e("服务器收到结果:", numshe + "");
    38         return super.onStartCommand(intent, flags, startId);
    39     }
    40 
    41     @Override
    42     public boolean onUnbind(Intent intent) {
    43         return super.onUnbind(intent);
    44     }
    45 
    46     @Override
    47     public IBinder onBind(Intent arg0) {
    48         return mMessenger.getBinder();
    49     }
    50 
    51 }
  • 相关阅读:
    The last access date is not changed even after reading the file on Windows 7
    渗透基础——获得当前系统已安装的程序列表
    Top 10 Best Free Netflow Analyzers and Collectors for Windows
    平安科技移动开发二队技术周报(第十五期)
    Intent传递对象的几种方式
    SQLite基础学习
    2 Java基础语法(keyword,标识符,凝视,常量,进制转换,变量,数据类型,数据类型转换)
    iOS 之应用性能调优的25个建议和技巧
    Fragment事务管理源代码分析
    CMake
  • 原文地址:https://www.cnblogs.com/labixiaoxin/p/4952177.html
Copyright © 2011-2022 走看看