ContentProvider
onCreate执行时机
单个进程:
D/MyApplication: Application attachBaseContext:
D/MyApplication: MyContentProvider onCreate:
D/MyApplication: MyContentProvider attachInfo:
D/MyApplication: Application onCreate:
所以 ContentProvider onCreate执行在 Application onCreate方法之前。
那多进程的情况下呢?ContentProvider是不是也和Application一样执行多次onCreate呢?
再次启动ActivityB,处于新的进程:
D/MyApplication: Application attachBaseContext:
D/MyApplication: Application onCreate:
第二个进程启动的时候并不会再调用MyContentProvider的onCreate方法。如果在MyContentProvider的onCreate中为某个对象的context变量赋值为applicationContext,在第二个进程中获取此变量的值,会是NULL。因为第二个进程启动没有执行MyContentProvider的onCreate,自然不会为变量赋值。
- 多进程情况下,单例失效,会在多个进程中存在不同的单例对象;
- 第二个进程启动后,第一个进程仍继续存在并执行