我们首先梳理下一般我们在安卓中不同组件之间通信有哪些方式
(Tips:以下讨论除了文件存储和ContentProvider等,一般都是指在同一进程内通信,如果要实现跨进程的通信,还需要借助Messenger或者AIDL等技术,后续还会抽时间详细介绍,暂不讨论)
方式一: 使用Intent进行传值: (Activity与Activity之间)
传值实例:
Intent intent=new Intent(); intent.putExtra("extra","Activity1"); intent.setClass(Activity1.this,Activity2.class); startActivity(intent);
取值实例:
Intent intent=getIntent(); String data=intent.getStringExtra("extra"); TextView tv_data=(TextView)findViewById(R.id.tv_data); tv_data.setText(data);
方式二:使用Binder传值 (Activity与Service之间)
1.定义Service
在Service里定义一个继承自Binder的内部类,通过这个类,把Service的对象传给需要的Activity,这样Activity就可以调用Service里的public方法和属性,代码如下: