zoukankan      html  css  js  c++  java
  • bindService和startService的区别

    区别:

    startService,关闭服务退出activity,service仍然处于后台运行

    bindService,关闭服务退出activity直接stopService,停止服务  

    bindService用于绑定一个服务,与服务进行通讯;startService用于启动停止服务

    bindService方式的一般过程:

    新建Service类BindService。在BindService类里新建内部类MyBinder,继承自Binder(Binder实现IBinder接口)。MyBinder提供方法返回BindService实例。

        public class MyBinder extends Binder{
            
            public BindService getService(){
                return BindService.this;
            }
        }

    实例化MyBinder得到mybinder对象;

    重写onBind()方法:

     @Override
     public IBinder onBind(Intent intent) {
      return mybinder;
     }

    在Activity里,实例化ServiceConnection接口的实现类,重写onServiceConnected()和onServiceDisconnected()方法

    ServiceConnection conn=new ServiceConnection(){

      @Override
      public void onServiceConnected(ComponentName name, IBinder service) {
      }

      @Override
      public void onServiceDisconnected(ComponentName name) {
      }

    };

    在Activity的onCreate()方法里,新建Intent,并绑定服务

            Intent intent=new Intent(MainActivity.this,BindService.class); 
            bindService(intent, conn,BIND_AUTO_CREATE);

    在Activity的onDestroy里面,添加

    unbindService(conn);

    如果不加这一步,就会报android.app.ServiceConnectionLeaked: ******.MainActivity has leaked ServiceConnection的异常。

    bindService()的执行过程如下:

    bindService(intent,conn,flag)->Service:onCreate()->Service:onBind()->Activity:onServiceConnected()

  • 相关阅读:
    107. Binary Tree Level Order Traversal II
    108. Convert Sorted Array to Binary Search Tree
    111. Minimum Depth of Binary Tree
    49. Group Anagrams
    使用MALTAB标定实践记录
    442. Find All Duplicates in an Array
    522. Longest Uncommon Subsequence II
    354. Russian Doll Envelopes
    opencv 小任务3 灰度直方图
    opencv 小任务2 灰度
  • 原文地址:https://www.cnblogs.com/xin-haiyang/p/4313270.html
Copyright © 2011-2022 走看看