服务android

绑定服务:

     MystartService extents Service{

        public IBindle onBind(Intent intent){

            return null;

        }
    }

Intent intent1 = new Intent(MainActivity.this,MyStartService.class);

startService(intent1);



<service android:name="con.sdingba.su.xxxx"/>        

=绑定服务

绑定服务,这样可以调用服务里面的方法,

Intent intent = new Intent(this,MyService.class);

bindService(intent, null, BIND_AUTO_CREATE);

下面是一个itheima的代码。关于绑定的;

MainActivity.java

package com.itheima.servicelife;


import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;

public class MainActivity extends Activity {
    private MyConn conn ;
    private IMiddlePerson mp;

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

    //绑定服务
    public void bind(View view){
        //3.activity采用绑定的方式去开启服务。
        Intent intent = new Intent(this,MyService.class);
        conn = new MyConn();
        bindService(intent, conn, BIND_AUTO_CREATE);

    }
    //解除绑定服务
    public void unbind(View view){
        unbindService(conn);
    }

    @Override
    protected void onDestroy() {
        System.out.println("啊啊啊,我是activity,我挂了");
        super.onDestroy();
    }
    //调用服务里面的方法。
    public void call(View view){
        //5.通过中间人调用服务里面的方法。
        mp.callMethodInService(55);
    }

    private class MyConn implements ServiceConnection{
        //4. 当服务被连接的时候调用 服务别成功 绑定的时候调用
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            System.out.println("在activity里面成功得到了中间人");

            mp = (IMiddlePerson) service;                   ///**********////
        }
        //当服务失去连接的时候调用(一般进程挂了,服务被异常杀死)
        @Override
        public void onServiceDisconnected(ComponentName name) {

        }
    }
}
MyService.java

package com.itheima.servicelife;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.widget.Toast;

public class MyService extends Service {

//2.实现服务成功绑定的代码 ,返回一个中间人。
@Override
public IBinder onBind(Intent arg0) {
    System.out.println("服务被成功绑定了。。。。");
    return new MiddlePerson();
}

@Override
public boolean onUnbind(Intent intent) {
    System.out.println("onunbind");
    return super.onUnbind(intent);
}

@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("ondestory");
    super.onDestroy();
}




/**
 * 这是服务里面的一个方法
 */
public void methodInService(){
    Toast.makeText(this, "哈哈,服务给你办好了暂住证。", 0).show();
}



//1.第一步服务要暴露方法 必须要有一个中间人
private class MiddlePerson extends Binder implements IMiddlePerson{
    //实现接口,这样可以把类定义为private,,这样既安全,而且外部可以访问类中的函数功能
    /**
     * 代办暂住证
     * @param money 给钱 50块钱以上才给办。
     */
    public void callMethodInService(int money){
        if(money>=50){
            methodInService();
        }else{
            Toast.makeText(getApplicationContext(), "多准备点钱。", 0).show();
        }
    }
    /**
     * 陪领导打麻将
     */
    public void playMajiang(){
        System.out.println("陪领导打麻将。");
    }
}

}



IMiddlePerson.java

package com.itheima.servicelife;

/**
* 中间人的接口定义
*
*/
public interface IMiddlePerson {
/**
* 代办暂住证
* @param money
*/
public void callMethodInService(int money);
}


你可能感兴趣的:(服务android)