界面:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:orientation="vertical"              android:layout_width="fill_parent"              android:layout_height="fill_parent"        >    <Button android:layout_width="match_parent"            android:layout_height="wrap_content"            android:text="开启服务"            android:onClick="start"            />    <Button android:layout_width="match_parent"            android:layout_height="wrap_content"            android:text="关闭服务"            android:onClick="close"            />    <Button android:layout_width="match_parent"            android:layout_height="wrap_content"            android:text="绑定服务"            android:onClick="bind"            />    <Button android:layout_width="match_parent"            android:layout_height="wrap_content"            android:text="取消绑定服务"            android:onClick="unbind"            />    <Button android:layout_width="match_parent"            android:layout_height="wrap_content"            android:text="调用服务的方法function()"            android:onClick="callFunction"            /></LinearLayout>

Activity

package com.example.serviceTest;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 MyActivity extends Activity {    private IService myBinder;    private ServiceConnection myConn = new MyConn();    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }    public void start(View view) {        startService(new Intent(this, TestService.class));    }    /**     * 多次调用停止服务,没有出现问题(不能多次解绑)     */    public void close(View view) {        stopService(new Intent(this, TestService.class));    }    public void bind(View view) {        Intent intent = new Intent(this, TestService.class);        bindService(intent, myConn, BIND_AUTO_CREATE);    }    /**     * 多次解绑服务会报出错误     */    public void unbind(View view) {        unbindService(myConn);    }    public void callFunction(View view) {        if (myBinder != null) {            myBinder.callFunction();        }    }    //绑定的时候,回调的一些方法    class MyConn implements ServiceConnection {        @Override        public void onServiceConnected(ComponentName name, IBinder service) {            System.out.println("获取到binder");            myBinder = (IService) service;        }        @Override        public void onServiceDisconnected(ComponentName name) {            System.out.println("com.example.serviceTest.MyActivity.MyConn.onServiceDisconnected");        }    }}


Service

package com.example.serviceTest;import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBinder;import android.widget.Toast;/** * Created by Heyiyong on 14-5-16. */public class TestService extends Service {    public IBinder onBind(Intent intent) {        System.out.println("服务被绑定了!");        return new MyBinder();    }    //中间人(service的代理)    private class MyBinder extends Binder implements IService{        public void callFunction() {            function();        }    }    @Override    public void onCreate() {        System.out.println("com.example.serviceTest.TestService.onCreate");    }    @Override    public int onStartCommand(Intent intent, int flags, int startId) {        System.out.println("com.example.serviceTest.TestService.onStartCommand");        return super.onStartCommand(intent, flags, startId);    }    @Override    public void onDestroy() {        System.out.println("com.example.serviceTest.TestService.onDestroy");    }    @Override    public boolean onUnbind(Intent intent) {        System.out.println("com.example.serviceTest.TestService.onUnbind");        return super.onUnbind(intent);    }    public void function() {        Toast.makeText(getApplicationContext(), "function()方法被调用了!", 1).show();        System.out.println("com.example.serviceTest.TestService.function");    }}

更多相关文章

  1. Android中JNI的使用方法
  2. 【解决方法】Unexpected namespace prefix “xmlns” found for
  3. Android Studio下“Error:Could not find com.android.tools.bui
  4. Android 结束进程的方法
  5. Android 常用的画图方法
  6. Android中Sample的使用方法
  7. Android图片圆角 用简单的方法实现
  8. Mac Android Studio获取数字签名的方法
  9. 【Android】安卓中常用的图片加载方法

随机推荐

  1. eclipse开发环境下,如何根据已有代码创建
  2. Android(安卓)8.0 Adaptive Icon特性 for
  3. android TextView设置中文字体加粗
  4. Android(安卓)实现绚丽多彩的TextView
  5. RK3288 Android(安卓)5.1 固件 编译
  6. android 源码 来电流程 详解
  7. android vold架构详解(3)_两个Socket
  8. 【ZT】Android(安卓)Activity和Intent机
  9. Android(java)学习笔记84:自定义异常类
  10. Android解析json数据的几种方法