Activity与Service进行通信的三种方式
第一种 简单通信
直接通过Intent进行传值,我们在启动一个Service的时候通过Intent的对象向Service进行传值,这种方式传递值比较不方便,性能不是很高。
(1)在MainActivity中通过启动服务和终止服务的按钮分别调用startService(intent)和stopService(intent)来启动和停止服务
MainActivity
public class MainActivity extends AppCompatActivity implements View.OnClickListener, ServiceConnection {
private Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intent = new Intent(MainActivity.this, MyService.class);
findViewById(R.id.btyStartService).setOnClickListener(this);
findViewById(R.id.btyStopService).setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btyStartService://启动服务
intent.putExtra("data", editText.getText().toString());
startService(intent);
break;
case R.id.btyStopService://终止服务
stopService(intent);
break;
}
}
}
(2)在Myservice中,我们通过onStartCommand(finalIntent intent, int flags, intstartId)这个函数来接收从Activity传过来的值
Myservice
public class MyService extends Service {
private Boolean myflags = false;
private String data = "服务器正在执行";
private static final String TAG = "ActivityTest";
private Callback callback;
public MyService() {
}
@Override
public IBinder onBind(Intent intent) {
return new Binder();
}
@Override
public void onCreate() {
super.onCreate();
myflags = true;
new Thre