[置顶] Android开发------IPC机制之Bundle实现
2016-05-23 11:15
447 查看
android前面介绍了Android的IPC机制,现在我们通过Bundle实现他的IPC机制,后面会相继介绍不同的跨进程通信方式
场景:手机上存在两个应用,现在需要通过应用A的Activity跳转到应用B的Activity中并传递数据,从而实现进程间通信
1.首先创建两个应用A,与应用B
应用A的Activity如下
private Button button=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
Bundle bundle=new Bundle();
bundle.putString("key","我在跟你通信呢");
ComponentName componentName=new ComponentName("www.goldwind.cn.ipcbundlea","www.goldwind.cn.ipcbundlea.MainActivity");
intent.setComponent(componentName);
intent.putExtras(bundle);
startActivity(intent);
}
});
}
public void initView(){
button=(Button) findViewById(R.id.send);
}
我们通过创建Intent 在Intent中设置Component来实现两个应用间的Activity跳转,这里的intent.setComponent()方法中设置组件名称,ComponentName来确定组件ComponentName构造方法中传递参数两个参数,第一个包名,第二个包名下的类名(即要跳转的Activity的名称);注意:写完整的包名,然后通过Intent的putExtras方法携带Bundle对象传递数据过去,
2.应用B的Activity如下:
private TextView textView=null;
private Button button=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
Bundle bundle=getIntent().getExtras();
if(bundle!=null){
textView.setText(bundle.getString("key"));
}
}
public void initView(){
textView=(TextView)findViewById(R.id.shuju);
button=(Button)findViewById(R.id.send);
}
应用B通过getIntent().getExtras()获取传递过来的Bundle对象,我们通过Bundle 的getString()方法通过key获取传递的数据。并设置TextView的值。
3.界面截图A
以下是不同情况下的状态。
1.A启动后 2.B自己启动 3.通过A跳转启动B获取数据后改变状态
场景:手机上存在两个应用,现在需要通过应用A的Activity跳转到应用B的Activity中并传递数据,从而实现进程间通信
1.首先创建两个应用A,与应用B
应用A的Activity如下
private Button button=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
Bundle bundle=new Bundle();
bundle.putString("key","我在跟你通信呢");
ComponentName componentName=new ComponentName("www.goldwind.cn.ipcbundlea","www.goldwind.cn.ipcbundlea.MainActivity");
intent.setComponent(componentName);
intent.putExtras(bundle);
startActivity(intent);
}
});
}
public void initView(){
button=(Button) findViewById(R.id.send);
}
我们通过创建Intent 在Intent中设置Component来实现两个应用间的Activity跳转,这里的intent.setComponent()方法中设置组件名称,ComponentName来确定组件ComponentName构造方法中传递参数两个参数,第一个包名,第二个包名下的类名(即要跳转的Activity的名称);注意:写完整的包名,然后通过Intent的putExtras方法携带Bundle对象传递数据过去,
2.应用B的Activity如下:
private TextView textView=null;
private Button button=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
Bundle bundle=getIntent().getExtras();
if(bundle!=null){
textView.setText(bundle.getString("key"));
}
}
public void initView(){
textView=(TextView)findViewById(R.id.shuju);
button=(Button)findViewById(R.id.send);
}
应用B通过getIntent().getExtras()获取传递过来的Bundle对象,我们通过Bundle 的getString()方法通过key获取传递的数据。并设置TextView的值。
3.界面截图A
以下是不同情况下的状态。
1.A启动后 2.B自己启动 3.通过A跳转启动B获取数据后改变状态
相关文章推荐
- Android-Universal-Image-Loader三大组件DisplayImageOptions、ImageLoader、ImageLoaderConfiguration详解
- Android开发实践 BroadcastReceiver
- Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果
- android 自定义控件字体,解决字体偏移,卡顿,代码重复等问题
- Android开发PopupWindow showAtLocation用法
- android 文件存储以及SharedPreferences存储以及模拟记住密码
- Android开发所遇到的错误与解决方法
- android app icon 图标大小尺寸
- AndroidStudio插件GsonFormat快速实现JavaBean
- Android蓝牙串口连接总结
- win7与android设备通过蓝牙串口的连接方法
- Android:利用SharedPreferences实现自动登录
- 推荐几款实用的Android Studio 插件
- Android View的测量
- Android 应用退出后不留在最近运行任务栏中
- Android 源代码自动编译packages/apps
- Android实现圆形圆角图片
- Android开发手记
- Android应用开发SharedPreferences存储数据的使用方法
- Android Studio apk 打包流程