Arouter原理
路由框架會在項(xiàng)目的編譯期通過注解處理器apt掃描所有添加@Route注解的Activity類洋只,然后將Route注解中的path地址和Activity.class文件映射關(guān)系保存到它自己生成的java文件中金闽,只要拿到了映射關(guān)系便能拿到Activity.class坊夫。
apt是在編譯期對代碼中指定的注解進(jìn)行解析屠缭,然后做一些其他處理(如通過javapoet生成新的Java文件)。我們常用的ButterKnife翠语,其原理就是通過注解處理器在編譯期掃描代碼中加入的@BindView的止、@OnClick等注解進(jìn)行掃描處理,然后生成XXX_ViewBinding類骗污,實(shí)現(xiàn)了view的綁定崇猫。javapoet是用來生成java文件的一個library,它提供了簡便的api供你去生成一個java文件需忿。
pushcore
最近發(fā)現(xiàn)公司的項(xiàng)目出現(xiàn)個pushcore進(jìn)程邓尤,看了一下代碼,因?yàn)槭窃贏ndroidmanifest加了android:process,這個配制的作用如下
android:process:是否需要在單獨(dú)的進(jìn)程中運(yùn)行,當(dāng)設(shè)置為android:process=”:remote”時汞扎,代表Service在單獨(dú)的進(jìn)程中運(yùn)行季稳。注意“:”很重要,它的意思是指要在當(dāng)前進(jìn)程名稱前面附加上當(dāng)前的包名澈魄,所以“remote”和”:remote”不是同一個意思景鼠,前者的進(jìn)程名稱為:remote,而后者的進(jìn)程名稱為:App-packageName:remote