Android 组件复用和进程关系

一:跨进程调用Activity

案例设计, 设计两个Application, 第一个Application1将调用第二个Application中的Activity2, 同时第二个Application2会调用自身的Activity2. 以此判断进程ID来观察进程的存在情况, 详细说明和代码如下:

Application1: ClientApk 这个程序有一个ClientMainActivity会发起对应用二的一个Activity(名称为ServerActivity)的调用, ClientMainActivity启动时, 将进程的id打印出来.

注意ComponentName前面的是包名, 后面的是Activity的ClassPath

 

 

Application2: ServerApk 这个程序有两个Activity, 其一为ServerMainActivity, 其二为ServerActivity, 点击ServerMainActivity, 会对ServerActivity进行调用.  ServerActivity 即被调用, 这两个Activity启动的时候, 进程号也会打印出来.


下面有三个有意思的过程:

三个试验:

 

试验一:

1. 模拟器关闭

2. 启动ServerAPK 发现MainServerActivity所在的进程为193

3. 触发MainServerActivity的Text让ServerActivity启动, 发现ServerActivity的进程号为193

4. 启动ClientAPK, 发现MainClientActivity所在的进程号为250

5. 触发MainClientActivity的Text让ServerActivity再次启动, 发现进程号为:193

 

结论: 如果Activity已经启动, 第三方调用公用的Activity, 将在已经启动的Activity进程中调用

 

实验二:

继续上面的试验:

1. 按返回键, 分别退出两个APK

2. 启动ClientAPK, 发现进程号为250

3. 触发MainClientActivity的Text让ServerActivity再次启动, 发现进程号为:193

4. 长按住Home健, 触发MainServerActivity的Text让ServerActivity启动, 发现ServerActivity的进程号为193

5. 触发MainServerActivity的Text让ServerActivity启动, 发现ServerActivity的进程号为193

 

结论: 进程没有销毁, 都在后台运行着


试验三:

1. 模拟器关闭

2. 启动ClientAPK, 发现MainClientActivity所在的进程号为214

3. 触发MainClientActivity的Text让ServerActivity启动, 发现进程号为:232

4. 启动ServerAPK 发现MainServerActivity所在的进程为258

5. 触发MainServerActivity的Text让ServerActivity启动, 发现ServerActivity的进程号为258

6. 长按住Home健启动ClientAPK

7. 触发MainClientActivity的Text让ServerActivity启动, 发现进程号为:258

 

 

结论:

1. 调用对方的公有Activity组件, 如果对方还没有启动, 则重新开一个进程将公有Activity组件启动起来

2. 公有Activity组件所在的应用程序启动时, 会重新将公有Activity组将放在自己应用程序的进程中, 并将1中新开启的进程销毁

3. 后面将一直在公有Activity组件所在应用程序的进程中,启动公有Activity组件。

点击此处:源码下载

二: 跨进程调用Service

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值