android进程间通讯(1)--Bundle和文件共享

本文介绍了Android进程间通信(IPC)中使用Bundle和文件共享的方法。通过修改AndroidManifest.xml中的process属性创建多进程,并利用Bundle实现不同进程间的数据传递。此外,还探讨了通过文件共享实现进程间数据交换的技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android进程间通讯(1)–Bundle和文件共享

前言:之前记录过android的IPC方式有Bundle,文件共享,Messenger,AIDL,ContentProvider和socket。后面将详解这几种IPC方式。按类别原理分类,实际上方式可以分为4种:1.Bundle 2.文件共享 3.Binder,包括Messenger,AIDL, ContentProvider 4.socket。接下来讲解Bundle和文件共享的使用

1.Bundle

android四大组件中的三大组件(Activity, Service, Receiver)都支持在Intent传递Bundle数据,由于Bundle实现了Parcelable接口,所以可以十分方便的在进程间传输,当然我们传输的数据必须能够被序列化,比如基本类型、实现了Parcelable接口的对象、实现了Serializable接口的对象以及一些Android所支持的特殊对象。

(1).创建多进程

在同一个android应用中创建多进程,需要修改AndroidManifest.xml中process属性,即在四大组件的根节点添加android:process=”hdc.video”,即可创建一个新的名为hdc.video的进程。

          <activityandroid:name=".activities.WebVideoActivity"
           android:configChanges="keyboardHidden|orientation|screenSize"
           android:exported="true"
           android:screenOrientation="portrait"
           android:process="hdc.video"></activity>

而应用的默认进程是应用的包名,也可以在application根节点修改process属性进行更改

      <application
        android:name="com.hdc.voicesAssistant"
        android:allowBackup="true"
        android:icon="@mipmap/dan_icon"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/dan_icon"
        android:supportsRtl="true"
        android:process="com.hdc.voiceAssistant"
        android:theme="@style/AppTheme">
       </application>

(2).使用Bundle进行通讯

假如android:process=”com.hdc.voiceAssistant” 进程的MainActivity需要传递数据到android:process=”hdc.video”的进程的WebVideoActivity,则在MainActivity中

           Intent intent = new Intent();
            intent.setClass(MainActivity.this, WebVideoActivity.class);
            Bundle bundle = new Bundle();
            bundle.putString("second", "second");
            intent.putExtras(bundle);
            startActivity(intent);

在WebVideoActivity的onCreate方法中接受数据

          Bundle bundle = getIntent().getExtras();
          bundle.getString("second");

2.文件共享

Android是基于Linux内核,使得其并发读写文件可以没有限制地进行,甚至两个线程对同一个文件进行写操作都是允许的。通过文件交换数据使得进程间的通讯很好进行,但是其弊端就是可能存在数据异常,延迟等问题。通过文件共享的方式共享数据对文件的格式是没有要求的,可以是文本文件也可以是XML文件,只要读写双方约定好数据格式即可。

Android中常用的方式是SharedPreference,起底层使用的是xml。存数据如下:

        context.getSharedPreferences("user_preferences",Activity.MODE_PRIVATE)
        SharedPreferences.Editor editor = mUserPreferences.edit();
        editor.putString("user_id", user_id);
        editor.apply();

其他进程或当前进程其他地方使用时只需要获取起数据即可:

        context.getSharedPreferences("user_preferences",Activity.MODE_PRIVATE)
        String user_id = preference.getString("user_id","");

总结

上面两种方式是比较常用的进程间通讯方式,也是比较简单的IPC方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值