Android中的用户词库——UserDictionry
来源:互联网 发布:软件招聘网 编辑:程序博客网 时间:2024/06/07 02:32
关于android.process.acore
经常看到android.process.acore会报异常,我启动android2.3.3的模拟器看了一下logcat,android.process.acore进程包含了这么几个ContentProvider:
com.android.providers.contacts.SocialProvider
com.android.providers.applications.ApplicationsProvider
com.android.providers.contacts.ContactsProvider
com.android.providers.contacts.CallLogProvider
com.android.providers.userdictionary.UserDictionaryProvider
检查一下这几个apk的AndroidManifest.xml,都有这么一个属性:android:process="android.process.acore"。看来,只要上面这几个ContentProvider其中一个出问题导致整个进程挂了的话,其它的也会受影响。
关于BackupManagerService
系统中有一个BackupManagerService服务,这个主要负责把应用程序的数据up到服务器上,当某一天用户需要恢复数据时,再从服务器上把用户的数据down下来交给各个应用。BackupManagerService有一个设定的up周期。哪个APK有数据要进行上面这样的backup/restore服务的话,只需要在AndroidManifest.xml的application标签中增加这个属性:android:backupAgent="DictionaryBackupAgent"。属性的值是实现功能的具体类。比如UserDictionaryProvider的DictionaryBackupAgent,LatinIME的LatinIMEBackupAgent。这样,当系统的BackupManagerService到了设定的周期,要进行数据同步时,就会调用BackupAgent的子类中的接口。
与BackupManagerService相关的AndroidManifest.xml属性还有android:allowClearUserData,android:killAfterRestore,等。
关于UserDictionaryProvider
UserDictionaryProvider存储了三个字段:workd,frequency,locale。即,某个单词的使用频率和所属语言,主要与输入法相关。比如,我们在输入法里面看哪个词用的比较多,就把它添加到UserDictionaryProvider里面,也可以在用户输入单词时,从UserDictionaryProvider里面取出数据来供用户备选。另外,UserDictionaryProvider还实现了一个BackupAgent来做数据的backup/restore。
向UserDictionaryProvider里面添加数据,目前我已经发现了两种方式:一个是设置->语言和键盘->用户词库,在这里可以手工添加。另一个就是使用Android自带的英文输入法时,在备选词列表上面长按某个备选词,程序就会把这个备选词添加到UserDictionaryProvider里。至于中文输入法,不管是搜狗还是谷歌拼音,都还没有发现与UserDictionaryProvider相关的功能。搜狗有自己的词库同步功能,但使用的不是UserDictionaryProvider词库。
另外,访问UserDictionaryProvider的方法不止传统的ContentProvider一种方式,framework层的android.provider.UserDictionary里面也提供了一些访问接口。
屏蔽UserDictionaryProvider的功能
两种方案:1、将UserDictionaryProvider中的增删改查接口保留,但接口中的实现去掉。为什么不去掉?因为framework向应用程序提供了访问UserDictionaryProvider的API。2、是在使用Android英文输入法时出的问题,那就不要让Android英文输入法访问UserDictionaryProvider了(修改一下/packages/app/LatinIME/../UserDictionary.java文件)。
在LatinIME源码里面的AndroidManifest.xml文件中去掉android:backupAgent属性。
这样下来,在设置程序中手工添加词库后,LatinIME里面就永远不会把词库中的词显示为备选词了。
- Android中的用户词库——UserDictionry
- android输入法02:openwnn源码解析05—用户自定义词库
- 将搜狗细胞词库转换为其他输入法词库——深蓝词库转换1.1发布
- 错别字分析——自建错词库
- ElasticSearch5.0——IK词库加载
- Xposed框架开发入门(三)--Android某输入法用户个人词库提取
- centos配置自己的用户词库
- 我的词库表——OJT培训
- Solr之——整合mmseg4j中文分词库
- Python学习——jieba分词库和time模块
- 在Ubuntu9.04上安装ibus输入法 & 备份用户词库
- Android笔记——Activity中的数据传递案例(用户注册)
- Mac版R语言(六)文本挖掘(用户词库的导入、批量导入搜狗词库)
- Java开源分词系统IKAnalyzer学习(四) 词库加载源代码——Dictionary类
- Java开源分词系统IKAnalyzer学习(五) 词库加载源代码——DictSegmenty类
- Java开源分词系统IKAnalyzer学习(六) 词库加载源代码——Hit类
- 加载文件到内存——sunpinyin使用较大词库之后卡的问题的解决
- 深蓝词库转换1.2版本发布——支持紫光拼音和拼音加加
- 几个问题
- c 语言宏
- hdu 3835 R(N)
- 【友元类】友元类的访问限制,只在静态编译时有效,在动态链接时,是不受限制的
- hdu 3829 Cat VS Dog
- Android中的用户词库——UserDictionry
- POJ 2309 BST
- NIT 1464
- Java类、继承、多态
- C# 拖放操作源码详解
- Struts2数据传输的背后机制:ValueStack(值栈)
- 【错误】android invalid command-line parameter: Files. Hint: use '@foo' to launch a virtual device name
- Android通过http协议POST传输方式
- LINUX系统上JDK的安装