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()

  • 相关阅读:
    题解 CF432D 【Prefixes and Suffixes】
    题解 P3199 【[HNOI2009]最小圈】
    题解 AT1221 【水筒】
    题解 P4381 【[IOI2008]Island】
    题解 CF1242B 【0-1 MST】
    《数据库系统概论》 -- 3.1 SQL概论和DDL
    《数据库系统概论》 -- 2. 关系操作
    《数据库系统概论》 -- 1. 绪论
    配置vim成为IDE
    ubuntu--软件管理
  • 原文地址:https://www.cnblogs.com/xin-haiyang/p/4313270.html
Copyright © 2011-2022 走看看