Android 多进程学习

1 警惕android:multiprocess="true"
只要在哪个进程打开声明了multiprocess="true"的Activity,那么这个Activity就会在哪个进程,不会再收到android:process="xxxx"的限制。

出自:Activity中的multiprocess="true"??

2 如何查看多进程?
进入adb shell后,使用 “ps | grep 条目名称” 可以过滤出想要查看的进程。


Android 多进程学习_第1张图片
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 多进程学习)