您好,登錄后才能下訂單哦!
Service的基本操作,啟動service的方式有兩種,一種是context.startService,暫停的service是stopService,這種方式service與主activity沒有關聯,不能單純的進行數據交互(可以考慮使用廣播,進行交互),另一種方式binderService,這種方式返回的是一個binder對象,
binderService(Intent service,ServiceConnection conn,int flag):第一個參數是intent對象,第二個是鏈接對象,第三個是否自動創建service,0是不自動創建,BINDER_AUTO_CREATE
public class MyService extends Service {
public MyService() {
}
public int count = 0 ;
public MyBinder binder = new MyBinder();
public class MyBinder extends Binder {
// 創建一個集成Binder類的對象,activity調用service的時候返回一個Binder對象給activity
public int getCount(){
count = 10 ;
return count ;
}
}
@Override
public IBinder onBind(Intent arg0) {
// 必須實現的方法
return binder;
}
@Override
public void onCreate() {
// 每次創建的時候執行一次,
System.out.println("onCreate");
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// service每次運行的時候執行
System.out.println("onStartCommand");
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
// 銷毀的之后執行
System.out.println("onDestroy");
super.onDestroy();
}
}
public class MainActivity extends Activity implements OnClickListener {
private Button start, stop, get;
MyService.MyBinder binder;
private ServiceConnection conn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
// 鏈接斷開的時候進行掉用
System.out.println("service鏈接斷開");
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// 進行鏈接的時候進行調用
System.out.println("service鏈接成功");
binder = (MyService.MyBinder) service;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.stop);
get = (Button) findViewById(R.id.get);
this.start.setOnClickListener(this);
this.stop.setOnClickListener(this);
this.get.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
// 第二種啟動方式
Intent in = new Intent(MainActivity.this, MyService.class);
bindService(in, conn, Service.BIND_AUTO_CREATE);
// 第一種啟動方式,activity關閉的時候service也會隨著關閉
// Intent in = new Intent(MainActivity.this,MyService.class) ;
// MainActivity.this.startService(in) ;
break;
case R.id.stop:
// 第二種關閉方式
unbindService(conn);
// 第一種啟動方式,activity關閉的時候service也會隨著關閉
// Intent in2 = new Intent(MainActivity.this,MyService.class) ;
// MainActivity.this.stopService(in2) ;
break;
case R.id.get:
// 獲取狀態
System.out
.println("=====service返回的值======>>>>" + binder.getCount());
break;
default:
break;
}
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。