android服务调用

安卓调用服务里面的方法,不能直接调用服务里面的方法,必须通过一个代理(或者是一个通道)

创建服务并调用里面的方法步骤:

1.创建一个自己需要的服务;

2.在清单文件中配置;

3.在activity中调用事件方法;

示例的简单代码:

定义自己的服务

public class MyService extends Service {
 
 
        //绑定intent 为了返回给activity 用来调用服务里面的方法(实际就是一个中间的通道或者是代理)
	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		System.out.println("绑定成功。。");
		return new MyBind();
	}
	
        //实现一个接口用来绑定返回给activity
	public class MyBind extends Binder{
		public void callchangesing(String singname){
			changesing(singname);
		}
	}
       
        //一个service被创建出来的时候调用
	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		System.out.println("创建成功。。。");
		super.onCreate();
	}
	
        //一个service被销毁的时候调用
	@Override
	public void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
	}
	
        //服务里面的方法
	public void changesing(String singname){
		Toast.makeText(getApplicationContext(), "唱歌:" + singname, 0).show();
	}

配置清单文件

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.jit.testservice.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity><span style="color:#ff0000;">
        <service android:name="com.jit.testservice.MyService">
            
        </service></span>
        
    </application>

在activity中定义单击事件:

public class MainActivity extends Activity {

	private MyService.MyBind binder;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    // 绑定开启服务
    public void bind(View view){
    	Intent intent = new Intent(this, MyService.class);
    	bindService(intent, new MyServiceCnn(), BIND_AUTO_CREATE);
    }
    
    //实现serviceconnection接口 用来绑定服务
    public class MyServiceCnn implements ServiceConnection{
 
 
                 // 绑定服务的时候开启服务返回来的binder用来调用service中的方法
		@Override
		public void onServiceConnected(ComponentName arg0, IBinder arg1) {
			// TODO Auto-generated method stub
			binder = (MyBind) arg1;
		}

		@Override
		public void onServiceDisconnected(ComponentName arg0) {
			// TODO Auto-generated method stub
			
		}
    	
    }


    
    public void unbind(View view){
    	
    }
    
    //调用服务里面的方法
    public void changesing(View view){
    	binder.callchangesing("月亮之上");
    }
    
    
}










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