不足之处请多多指正,共同学习
activity
public class MainActivity extends ActionBarActivity {
Button bind,unbind,getruntime;
TextView tv;
Intent it;
ServiceTest.MyIBinder sm;
ServiceConnection sc = new ServiceConnection() {
//绑定service之后回调
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Log.i("tag","----onServiceConnected----");
sm = (ServiceTest.MyIBinder) service;
}
//解绑service之后回调
@Override
public void onServiceDisconnected(ComponentName name) {
Log.i("tag","----onServiceDisconnected----");
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
it = new Intent();
it.setClass(this,ServiceTest.class);
startService(it);
tv = (TextView)findViewById(R.id.DisplayRuntime);
bind = (Button)findViewById(R.id.BindService);
bind.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//绑定service
bindService(it,sc, Service.BIND_AUTO_CREATE);
}
});
unbind = (Button)findViewById(R.id.Unbind);
unbind.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//解绑service
unbindService(sc);
}
});
getruntime = (Button)findViewById(R.id.getRunTime);
getruntime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//通过binder获取service运行时间
tv.setText(sm.getRunTime() + "");
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
stopService(it);
}
}
service
public class ServiceTest extends Service {
int time = 0;
@Override
public IBinder onBind(Intent intent) {
Log.i("tag","----onBind----");
return new MyIBinder();
}
class MyIBinder extends Binder {
public int getRunTime(){
return time;
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("tag","----onStartCommand----");
new Thread(){
@Override
public void run() {
super.run();
while(true){
time ++;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
return super.onStartCommand(intent, flags, startId);
}
@Override
public boolean onUnbind(Intent intent) {
Log.i("tag","----Unbind----");
return super.onUnbind(intent);
}
@Override
public void onCreate() {
super.onCreate();
Log.i("tag","----onCreate----");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.i("tag","----onDestroy----");
}
}