Android AddManager浅析
来源:互联网 发布:linux服务器开发实例 编辑:程序博客网 时间:2024/06/16 07:20
相关类: ActvityThread.java
ApplicationThreadNative.java
AddManager.java
请参照Android ActivityThread(主线程或UI线程)简介http://blog.csdn.net/myarrow/article/details/14223493
查看分析。
主要是在ActvityThread.java -> systemMain()或者main(String[] args)->attach(boolean system) -> 这里进行AddManager的初始化,并传入Application 参数。-> 将所有的插件实现类加入进来。
->pms.getInstalledPackages(GET_META_DATA);(获取所以的已经安装packageInfo,再对这些进行筛选符号是插件类的应用。)如:
<application>
<meta-data
android:name="isFeatureAddon"
android:value="true" />
<meta-data
android:name="targetPackages"
android:value="com.android.launcher3" />
<meta-data
android:name="featureClassNames"
android:value="plugins.sprd.unreadinfo.UnreadInfoManagerAddon" />
</application>
这一定得在插件应用的AndroidManifest.xml中写清楚。
AddManager.java->在构造函数就和这个应用程序的Context保持一致。
AddManager.java->提供一个借口InitalCallback-》onCreate(Context context,Class clazz);->给实现插件类调用(plugIn目录)。
AddManager.java->getAddon(int featureId,Class defClazz)->给需要调用插件类的地方用(launcher,settings等模块,具体函数都可以不执行任何东西,默认执行的操作)。
说明: 1,featureId给出具体实现类的名称(字串ID)。如果没有赋值,就采用默认的defClazz类进行处理。
2,通过遍历所有的包(PackageInfo),来找到插件的具体实现类。
----------这样就可以一个应用关掉插件(只需要修改这个应用的Feature字串ID为空就可以。或者可以配置其它的名称来切换成不同的插件实现类。)
参考SPRD代码实现来电短信显示条数:
相关类:
SprdUnreadInfoManager.java------ 应用的实现插件类(默认操作等,什么也不做,主要是与AddManager.java挂钩后,然后调用具体的实现类。)
UnreadInfoManagerAdd.java------- 实际的插件实现类(具体操作全在这个类实现)
BubbleTextView.java--- Launcher的每一个应用显示类(applayFromShortcutInfo(),applyFromApplicationInfo()这两个函数里面调用插件类的具体实现。)
LauncherAppState.java------ Launcher应用传入一些重要参数给插件类(LauncherAppState(),onTerminate())
LauncherModel.java Launcher监听广播的实现类。Run()解析未读短信条数。
Launcher.java 处理读取短信条数权限有关,在OnResume()调用一次读取短信条数,并提供更新短信条数的函数给Launcher应用本身调用。
Workspace.java 提供更新短信条数的接口。
AllAppsContainerView.java 全部应用View的实现类。
- Android AddManager浅析
- [Android] Android 动画浅析
- android linker 浅析
- Android Camera架构浅析
- Android Camera架构浅析
- Android之Binder浅析
- Android vold浅析
- Android Camera架构浅析
- Android Camera架构浅析
- 浅析Android MediaProvider之一
- 浅析android thread
- Android视频开发浅析
- Android Linker浅析
- android linker 浅析
- android linker 浅析
- Android多媒体浅析
- Android之Binder浅析
- 浅析Android MediaProvider之一
- json解析-----字符对象转换成Bean对象
- Bootstrap3 栅格系统-列偏移
- 计算每个月的统计数据
- 关于node.js的学习03
- 第13周项目5 拓扑排序算法验证
- Android AddManager浅析
- maven打包出现maven-resources-plugin:2.6:resources (default-resources)的解决
- 关于前台合并获取后台动态table中数据相同的单元格的问题;th td合并
- 第十二周项目5-迷宫问题之图深度优先遍历解法
- android studio 项目结构必知
- 数据解析
- 第十三周项目1-floyd算法
- css总结
- java.lang.IllegalStateException异常产生的原因及解决办法