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多进程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。