码迷,mamicode.com
首页 > 移动开发 > 详细

android Activity绑定Service

时间:2016-09-14 18:49:33      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

activity可以绑定Service,并且可以调用Service中定义的方法

 

Service代码:在里面多了一个IBinder;个人理解是用来与Activity绑定的主要通道;

public class MainServer extends Service {

    private final String TAG = "Service------->";

    private final IBinder binder = new MyBinder();        //绑定器

    public class MyBinder extends Binder {
        public MainServer getService() {
            return MainServer.this;    //返回本服务    
        }
    }

    /** 绑定时执行 */
    @Override
    public IBinder onBind(Intent intent) {
        Log.i(TAG, "onBind()");
        return binder;
    }

    /** 只在创建时执行一次 */
    @Override
    public void onCreate() {
        super.onCreate();
        Log.i(TAG, "onCreate()");
    }

    /** 断开绑定或者停止服务时执行 */
    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.i(TAG, "onDestroy()");
    }

    /** 当内存不够是执行该方法 */
    @Override
    public void onLowMemory() {
        super.onLowMemory();
        Log.i(TAG, "onLowMemory()");
        onDestroy();

    }

    /** 当从新绑定是执行 */
    @Override
    public void onRebind(Intent intent) {
        // TODO Auto-generated method stub
        super.onRebind(intent);
        Log.i(TAG, "onRebind()");
    }

    @Override
    public void onStart(Intent intent, int startId) {
        // TODO Auto-generated method stub
        super.onStart(intent, startId);
        Log.i(TAG, "onStart()");
    }

    /** 每次执行Service都会执行该方法 */
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.i(TAG, "onStartCommand --->flags = " + flags + "     startId = " + startId);
        con = new Connect();
        con.start();

        return super.onStartCommand(intent, flags, startId);
    }

    /** 断开绑定是执行 */
    @Override
    public boolean onUnbind(Intent intent) {
        Log.i(TAG, "onUnbind()");
        return super.onUnbind(intent);
    }
            


 

MainActivity代码:  必须声明实例ServiceConnection,并且在绑定成功后获取到Service,用以调用Service的方法

public class MainActivity extends Activity {
    
    private MainServer mainService;
    //绑定Service监听
    ServiceConnection sconnection = new ServiceConnection() {
        @Override
        public void onServiceDisconnected(ComponentName name) {
            Log.i("activity---->", "已断开Service");
        }
        /**当绑定时执行*/
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            // TODO Auto-generated method stub
            Log.i("activity---->", "已绑定到Service");
            mainService = ((MainServer.MyBinder)service).getService();
            Intent i = new Intent();
            mainService.onStartCommand(i, 0, 0);        //绑定成功后可以调用Service方法,此处等与是启动Service
        }
    };
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button start = (Button)findViewById(R.id.start);
        Button stop = (Button)findViewById(R.id.stop);
        Button send = (Button)findViewById(R.id.send);
        Button skip = (Button)findViewById(R.id.skip);
        
        start.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent bind = new Intent(MainActivity.this,MainServer.class);
                bindService(bind, sconnection, Context.BIND_AUTO_CREATE);
                
            }
        });
        stop.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                unbindService(sconnection);
            }
        });

 

android Activity绑定Service

标签:

原文地址:http://www.cnblogs.com/suliang-com/p/5873049.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!