上海天局信息技术有限责任公司

网站首页 > 天局论坛 > Android > App

android service的启动方式有以下两种

2017-12-22 13:06:47 上海天局信息技术有限责任公司 已读
android service的启动方式有以下两种:
1.Context.startService()方式启动 
①Context.startService()方式的生命周期: 启动时,startService –> onCreate() –> onStart()停止时,stopService –> onDestroy()如果调用者直接退出而没有停止Service,则Service 会一直在后台运行 Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法
2.Context.bindService()方式启动:
①Context.bindService()方式的生命周期: 绑定时,bindService -> onCreate() –> onBind()调用者退出了,即解绑定时,Srevice就会unbindService –>onUnbind() –> onDestory()Context.bindService()方式启动 Service的方法:绑定Service需要三个参数:bindService(intent, conn, Service.BIND_AUTO_CREATE);第一个:Intent对象第二个:ServiceConnection对象,创建该对象要实现它的onServiceConnected()和 onServiceDisconnected()来判断连接成功或者是断开连接第三个:如何创建Service,一般指定绑定的时候自动创建附代码
示例代码如下:
package com.dada.test;  
  
import android.app.Service;  
import android.content.Intent;  
import android.os.Binder;  
import android.os.IBinder;  
import android.util.Log;  
  
public class BindService extends Service {  
  
    private static final String TAG = "BindService";  
    private MyBinder myBinder = new MyBinder();  
    public void MyMethod(){  
        Log.i(TAG, "BindService-->MyMethod()");  
    }  
      
    @Override  
    public IBinder onBind(Intent intent) {  
        Log.i(TAG, "BindService-->onBind()");  
        return myBinder;  
    }  
      
    public class MyBinder extends Binder{  
          
        public BindService getService1(){  
            return BindService.this;  
        }  
    }  

@Override  
    public void onCreate() {  
        Log.i(TAG, "BindService-->onCreate()");  
        super.onCreate();  
    }  
  
    @Override  
    public void onStart(Intent intent, int startId) {  
        Log.i(TAG, "BindService-->onStart()");  
        super.onStart(intent, startId);  
    }  
  
    @Override  
    public void onDestroy() {  
        Log.i(TAG, "BindService-->onDestroy()");  
        super.onDestroy();  
    }  
  
    @Override  
    public boolean onUnbind(Intent intent) {  
        Log.i(TAG, "BindService-->onUnbind()");  
        return super.onUnbind(intent);  
    }  
      
}


Powered by MetInfo 5.3.17 ©2008-2022 www.metinfo.cn