关于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里面就永远不会把词库中的词显示为备选词了。

更多相关文章

  1. Android实现读写JSON数据的方法
  2. android 检测sqlite数据表和表中字段(列)是否存在 (转)
  3. android sqlite 自增数据类型
  4. android打开数据连接(目测最稳定方式)
  5. Android SQLite数据库存储实现
  6. android中如何屏蔽长按menu出现的输入法
  7. Android与C++ 使用socket传输数据
  8. android 使用Http的POST方式读取网络数据

随机推荐

  1. 【前端词典】CDN 带来这些性能优化(进阶必
  2. HTML5 金色漩涡动画
  3. HTML5 3D爱心表白动画
  4. 【前端词典】Vue 使用时常见的 5 个问题
  5. 最全面的CSS3鼠标滑过动画按钮集锦
  6. 【前端词典】输入 URL 到展现涉及的缓存
  7. AngularJS 日期时间选择组件(附详细使用方
  8. HTML5制作一场精美的烟花盛宴
  9. 【前端词典】11 个 CSS 知识搭配 11 个 J
  10. HTML5 3D蝴蝶飞舞动画