jichengwang

1.创建Service代码模板

MyService 、MyActivity
package com.xsj.service;
 
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
 
public class MyService extends Service {
 
    private int count = 0;
    private MyBinder binder = new MyBinder();
 
    private boolean flag = true;
 
    /**
     * 通过继承Binder来实现IBinder
     */
    public class MyBinder extends Binder {
        // 这里返回了Service运行的状态,即计数值
        public int getCount() {
            return count;
        }
    }
 
    /**
     * 必须实现的方法,这里返回了IBinder对象
     */
    @Override
    public IBinder onBind(Intent intent) {
        return binder;
    }
 
    /**
     * Service被创建时回调该方法
     */
    @Override
    public void onCreate() {
        showCount();
    }
 
    /**
     * Service被断开连接时回调的方法
     */
    @Override
    public boolean onUnbind(Intent intent) {
        return super.onUnbind(intent);
    }
 
    /**
     * Service被关闭之前回调的方法
     */
    @Override
    public void onDestroy() {
        flag = false;
        super.onDestroy();
    }
 
    /**
     * 计数操作
     */
    private void showCount() {
        new Thread() {
            @Override
            public void run() {
                while (flag) {
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    count++;
                }
            }
        }.start();
    }
 
}
package com.xsj.service;
 
import android.app.Activity;
import android.app.Service;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
 
public class MyActivity extends Activity {
 
    private Button start;
    private Button stop;
    private Button getCount;
 
    MyService.MyBinder binder;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        start = (Button) findViewById(R.id.start);
        stop = (Button) findViewById(R.id.stop);
        getCount = (Button) findViewById(R.id.get_count);
 
        final Intent intent = new Intent();
        intent.setAction("com.xsj.SERVICE");
 
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 绑定指定的service
                bindService(intent, conn, Service.BIND_AUTO_CREATE);
            }
        });
 
        stop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 在这里解除和service的绑定
                unbindService(conn);
            }
        });
 
        getCount.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MyActivity.this,
                        "来自service - " + binder.getCount(), Toast.LENGTH_LONG)
                        .show();
            }
        });
    }
 
    /**
     * ServiceConnection对象
     */
    private ServiceConnection conn = new ServiceConnection() {
 
        // 当activity和service断开连接时回调该方法
        @Override
        public void onServiceDisconnected(ComponentName name) {
        }
 
        // 当activity和service连接成功时回调该方法
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            // 获取service的onBind()方法所返回的MyBinder对象
            binder = (MyService.MyBinder) service;
        }
    };
 
    @Override
    protected void onResume() {
        super.onResume();
    }
 
    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
 
}

 

分类:

技术点:

相关文章: