Android 多进程学习
1 警惕android:multiprocess="true"
只要在哪个进程打开声明了multiprocess="true"的Activity,那么这个Activity就会在哪个进程,不会再收到android:process="xxxx"的限制。
出自:Activity中的multiprocess="true"??
2 如何查看多进程?
进入adb shell后,使用 “ps | grep 条目名称” 可以过滤出想要查看的进程。
image.png
3 多进程之间不共享静态变量
但是在编译期声明的变量除外,例如
public class MainActivity extends AppCompatActivity { public static String NAME = "Hello Android!";}public class SecondActivity extends AppCompatActivity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); textView = findViewById(R.id.textView); textView.setText(String.valueOf(MainActivity.NUMBER));}
这种是不受影响的,因为SecondActivity中MainActivity.NUMBER的值在编译期就已经决定了。
public class MainActivity extends AppCompatActivity { public static String NAME = "Hello Android!"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); NAME = "Hello world!";}
但是如果是这种,在运行期重新赋值的话,那么在SecondActivity(声明在另外一个进程中的activity)是拿不到最新值"Hello world!",而只能拿到编译期的值“Hello Android!”。
4 跨进程通信
Intents can “travel” across processes, and so can Handlers and Messengers. You can also rely on AIDL (Android Interface Definition Language) and Binder, which is what you usually do when you’re declaring a bound service (but you can do more!).
参考:
巧用Android多进程,微信,微博等主流App都在用
Going multiprocess on Android
android多进程深入分析
Android多进程
更多相关文章
- Android进程启动
- android点滴(2)之Android安装环境变量的配置--注意不可以有空格
- Android静态变量的生命周期 简单介绍
- android中的进程与线程
- Android IPC(跨进程通信)之AIDL
- Android的进程回收
- android 使用Application保存全局变量
- init进程 && 解析Android启动脚本init.rc && 修改它使不启动andr