您的位置:首页 > 汽车 > 时评 > 哪里有网站建设工程_校园生活网页设计_天津seo渠道代理_网络整合营销4i原则是指

哪里有网站建设工程_校园生活网页设计_天津seo渠道代理_网络整合营销4i原则是指

2025/1/14 4:18:56 来源:https://blog.csdn.net/weixin_63357306/article/details/143456495  浏览:    关键词:哪里有网站建设工程_校园生活网页设计_天津seo渠道代理_网络整合营销4i原则是指
哪里有网站建设工程_校园生活网页设计_天津seo渠道代理_网络整合营销4i原则是指

1. 什么是进程?

      进程是操作系统分配资源(如 CPU、内存等)的基本单位。简单来说,进程是一个正在执行的程序的实例。每个进程都有自己的内存空间、数据栈和其他辅助数据,用于跟踪进程的执行状态。在 Android 中,每个应用程序通常运行在自己的进程中,这种隔离性确保了一个应用的崩溃不会直接影响到其他应用。

2. 开启多进程的方式

       在 Android 中,开启多进程的方式主要通过在 AndroidManifest.xml 文件中为四大组件(Activity、Service、BroadcastReceiver、ContentProvider)指定 android:process 属性来实现。这个属性允许开发者指定组件在哪个进程中运行,从而实现多进程的功能。

以下是一个简单的示例,展示了如何在Android中 创建多进程:

      <activityandroid:name=".MainActivity"android:exported="true" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name=".ThirdActivity"android:exported="false"android:process="com.ex.binder1.remote" /><activityandroid:name=".SecondActivity"android:exported="false"android:process=":remote" />

在上面的代码中,我们为 SecondActivity 和 ThirdActivity 使用了process属性分别指定了不同的进程。具体来说:

  • SecondActivity 的进程名为 xxx.xxx.xxx:remote,其中 xxx.xxx.xxx 是应用的包名。
  • ThirdActivity 的进程名为 com.ex.binder1.remote,这是另一种完整的说明方式,不会附加包名。

同时MainActivity没有为他指定process属性,那么它运行在默认进程中,默认进程的进程名是包名。

进程命名规则

  • 进程名以“:”开头的进程属于当前应用的私有进程,其他应用的组件不可以和它跑在同一个进程当中。
  • 不以“:”开头的进程属于全局进程,其他应用通过shareUID方式可以和它跑在同一个进程中。

3.查看多进程的方式

1.通过Android Studio的Log控制台查看

2.adb命令查看

 adb shell ps | findstr com.ex.binder1(自己的包名)

4.多进程的进程隔离问题

在进程A定义一个变量,然后进行重新赋值,然后我们在进程B拿到这个变量打印出来看一下效果,会发现进程B的变量是没有被修改过的,这就很有意思了,这就是我们说的进程隔离。

产生进程隔离的原因?

我们知道Android为每一个应用分配了一个独立的虚拟机,或者说为每一个进程都分配一个独立的虚拟机,不同的虚拟机在内存分配上有不同的地址空间,这就导致在不同的虚拟机中访问同一个类的对象会产生多份副本。所以修改进程A的变量不会影响到进程B的变量。

一般来说,进程隔离会造成如下几方面的问题:

(1)静态成员和单例模式完全失效。原因:不同进程访问的不是同一个对象了。

(2)线程同步机制完全失效。原因:不同进程锁的不是同一个对象了。

(3)SharePreferences的可靠性下降。原因:SharePreferences底层是通过读/写XML文件来实现的,并发 写或者读/写 显然是可能出现问题的。

(4)Application会多次创建。原因:运行在不同(进程)中的组件是属于不同的(虚拟机和Application以及内存空间)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com