多个activity操作一个service

来源:互联网 发布:excel编程用途 编辑:程序博客网 时间:2024/06/06 23:57

service代码


public class UploadService extends Service{


private Context mContext;


private ServerDataManager mServerDataManager;

private int testId = 0;

@Override
public void onCreate() {
super.onCreate();
mContext = this;
testId = testId+10;
Log.e("aaaa", "======= UploadService onCreate");
}

@Override
public void onStart(Intent intent, int startId) {
Log.e("aaaa", "======= UploadService onStart");
super.onStart(intent, startId);
}

@Override
public void onRebind(Intent intent) {
Log.e("aaaa", "======= UploadService onRebind");
super.onRebind(intent);
}


@Override
public boolean onUnbind(Intent intent) {
Log.e("aaaa", "======= UploadService onUnbind");
return super.onUnbind(intent);
}


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("aaaa", "======= UploadService onStartCommand");
Log.e("aaaa", "======= UploadService testId : "+testId);
return super.onStartCommand(intent, flags, startId);
}

@Override
public IBinder onBind(Intent intent) {
Log.e("aaaa", "======= UploadService onBind");
Log.e("aaaa", "======= UploadService testId : "+testId);
return new UploadBind();
}


public class UploadBind extends Binder{

public UploadService getService(){
return UploadService.this;
}

public int getTestId(){
return testId;
}


public int updateTestId(int data){
testId = testId + data;
return testId;
}
}

@Override
public void onDestroy() {
super.onDestroy();
}


}


activity a 部分代码:


@Override
protected void onCreate() {

TestConn  conn = new TestConn();
Intent service = new Intent();
service.setClass(mContext, UploadService.class);
bindService(service, conn, BIND_AUTO_CREATE);

}


@Override
protected void onResume() {
Log.e("aaaaa", "======= MainActivity onResume : " + bind);
if(bind!=null){
Log.e("aaaaa", "======= MainActivity bind : " + bind.getTestId());
}
super.onResume();
}

private UploadBind bind;

class TestConn implements ServiceConnection{


@Override
public void onServiceConnected(ComponentName arg0, IBinder arg1) {
bind = (UploadBind)arg1;
}


@Override
public void onServiceDisconnected(ComponentName arg0) {


}

}



activity b 部分代码:


@Override
protected void onCreate() {
TestConn  conn = new TestConn();
Intent service = new Intent();
service.setClass(mContext, UploadService.class);
bindService(service, conn, BIND_AUTO_CREATE);

}


@Override
protected void onResume() {
Log.e("aaaaa", "======= MessageActivity onResume : " + bind);
if(bind!=null){
Log.e("aaaaa", "======= MessageActivity bind : " + bind.getTestId());
}
super.onResume();
}

private UploadBind bind;

class TestConn implements ServiceConnection{


@Override
public void onServiceConnected(ComponentName arg0, IBinder arg1) {
bind = (UploadBind)arg1;
}


@Override
public void onServiceDisconnected(ComponentName arg0) {


}

}



@Override
public void onBackClick() {
if(bind!=null){
Log.e("aaaaa", "======= MessageActivity onBackClick00 bind : " + bind.getTestId());
int data = bind.updateTestId(100);
Log.e("aaaaa", "======= MessageActivity onBackClick11 bind : " + data);
Log.e("aaaaa", "======= MessageActivity onBackClick22 bind : " + bind.getTestId());
}
finish();

}


流程:

activity a 以bindservice方式 启动 service,会执行service里面的onCreate, onBind方法,

跳转到activity b后,再次以bindservice方式 启动 service,不执行service里面的任何函数,

但是获得service里面的bind,改变service里面的某个变量x,

返回activity a,a获取service里面的bind,然后获取变量x,x的值为activity b设置的值



activity a 部分代码:
0 0
原创粉丝点击