startActivity()拾遗

2021-06-22  本文已影响0人  转岗做JAVA
1. taskAffinity
2. 通过Binder传递数据的限制

通常情况下大小会限制为1M,不同厂商定制后会有不同,超过限制大小会造成程序崩溃,举例:

Intent intent = new Intent(this, A.class);
intent.putExtra("bean", new Bean()); //传递Bean中的数据
startActivity(intent);

static class Bean implements Serializable {
    private byte[] data = new byte[1024 * 1024];
    String str = "data string";
}

解决办法:

Binder机制详解参考:
https://blog.csdn.net/luoshengyang/article/details/6629298
https://www.jianshu.com/p/adaa1a39a274

3. process造成多个Application

解决办法:

更多详细介绍可参考这篇文章:https://conorlee.top/2017/02/21/Multi-Process-Dispatch/

4. 后台启动Activity失效

从Android 10(API 29)开始,Android系统对后台启动Activity做了一定的限制,官方建议使用通知来替代直接启动Activity操作。

上一篇 下一篇

猜你喜欢

热点阅读