start方式开启服务的特点&bindService 方式开启服务的特点

  服务是在后台运行 可以理解成是没有界面的activity
  定义四大组件的方式都是一样的  
  定义一个类继承Service
 
  start方式开启服务的特点
  特点:
  (1)服务通过startservice方式开启 第一次点击按钮开启服务 会执行服务的onCreate 和 onStart方法
  (2)如果第二次开始在点击按钮开启服务 服务之后执行onStrat方法
  (3)服务被开启后 会在设置页面里面的 running里面找得到这个服务 
  ***(4)startservice 方式开启服务 服务就会在后台长期运行 直到用户手工停止 或者调用StopService方法 服务才会被销毁
 
 bindService 方式开启服务的特点
 (1)当点击按钮第一次开启服务 会执行服务的onCreate方法 和 onBind()方法
 (2) 当我第二次点击按钮在调用bindservice  服务没有响应 
 **(3) 当activity销毁的时候服务也销毁  不求同时生但求同时死 
 (4)通过bind方式开启服务  服务不能再设置页面里面找到  相当于是一个隐形的服务
 (5)bindservice不能多次解绑 多次解绑会报错
 
为什么要引入bindService
目的为了调用服务里面的方法
 
/**
 * 定义服务  需要在清单文件里面配置
 * @author 
 *
 */
public class FirstService extends Service {

    @Override
    public IBinder onBind(Intent intent) {
        
        System.out.println("onBind");
        return null;
    }

    //当服务第一次被开启的时候调用
    @Override
    public void onCreate() {
        System.out.println("onCreate");
        super.onCreate();
    }
    
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        System.out.println("onStartCommand");
        return super.onStartCommand(intent, flags, startId);
    }
    
    //服务销毁的时候执行
    @Override
    public void onDestroy() {
        System.out.println("onDestroy");
        super.onDestroy();
    }
    
}

 

/**
 * activity 你大爷 是 服务
 * 
 * @author 
 * 
 */
public class MainActivity extends Activity {

    private MyConn conn;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    // 点击按钮开启服务
    public void click1(View v) {

        Intent intent = new Intent(this, FirstService.class);
        // 开启服务
        startService(intent);

    }

    // 点击按钮停止服务
    public void click2(View v) {
        Intent intent = new Intent(this, FirstService.class);
        stopService(intent);
    }

    // 点击按钮通过 bindservice 方式去开启服务
    public void click3(View v) {
        Intent intent = new Intent(this,FirstService.class);
        
        //连接到服务FirstService 
        
         conn = new MyConn();
         System.out.println("bind----"+conn);
         bindService(intent,conn, BIND_AUTO_CREATE);
        
        
    }

    //点击按钮 取消绑定服务
    public void click4(View v) {
         System.out.println("unbind----"+conn);
        unbindService(conn);
    }
    
    //当activity销毁的时候调用
    @Override
    protected void onDestroy() {
        //当activity销毁的时候  取消绑定服务
        unbindService(conn);
        
        super.onDestroy();
    }
    
    
    
    
    //用来监听服务的状态
    private class MyConn implements ServiceConnection{

        //连接成功后调用
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            
        }

        //失去连接调用
        @Override
        public void onServiceDisconnected(ComponentName name) {
            
        }
        
    }
    
}

AndroidManifest.xml

        <!--配置服务   -->
        
        <service android:name="com.itheima.service.FirstService">
        </service>

 

posted @ 2016-10-19 15:06  iFat  阅读(807)  评论(0编辑  收藏  举报