当前位置: 首页 > news >正文

学做网站论坛第六节素材网

学做网站论坛第六节,素材网,学校网站开发方案,廊坊网站建站背景:项目中一直使用的是原生 SP,众所周知,使用原生 SP 存在卡顿性能问题。公司的性能监控平台抓到不少原生 SP 导致的 ANR 问题: java.io.FileDescriptor.sync (FileDescriptor.java) android.os.FileUtils.sync (FileUtils.java:256) android.app.SharedPreferencesImpl.…

背景:项目中一直使用的是原生 SP,众所周知,使用原生 SP 存在卡顿性能问题。公司的性能监控平台抓到不少原生 SP 导致的 ANR 问题:


java.io.FileDescriptor.sync (FileDescriptor.java)
android.os.FileUtils.sync (FileUtils.java:256)
android.app.SharedPreferencesImpl.writeToFile (SharedPreferencesImpl.java:807)
android.app.SharedPreferencesImpl.access$900 (SharedPreferencesImpl.java:59)
android.app.SharedPreferencesImpl$2.run (SharedPreferencesImpl.java:672)
android.app.QueuedWork.processPendingWork (QueuedWork.java:265)
android.app.QueuedWork.waitToFinish (QueuedWork.java:178)
android.app.ActivityThread.handleServiceArgs (ActivityThread.java:4977)
android.app.ActivityThread.access$2300 (ActivityThread.java:284)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:2322)
android.os.Handler.dispatchMessage (Handler.java:106)
android.os.Looper.loopOnce (Looper.java:233)
android.os.Looper.loop (Looper.java:334)
android.app.ActivityThread.main (ActivityThread.java:8396)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:582)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1068)

因此,替换原生 SP 迫在眉睫。

本文记录如何使用腾讯开源框架 MMKV 替换原生 SP、以及替换后当中遇到的一些问题解决。

一、替换方案选择

综合考虑,我们选择了方案3

二、接入 MMKV

  1. 新建 MMKV module

build.gradle 中添加依赖,这里采用的是较为稳定的版本 1.2.14

implementation 'com.tencent:mmkv:1.2.14'

2. 重新实现SharedPreferences.Editor, SharedPreferences 以及迁移原本的 SharePreferences 数据


package com.mikel.mmkv;import android.content.Context;
import android.content.SharedPreferences;import com.tencent.mmkv.MMKV;import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;public class MMKVSP implements SharedPreferences.Editor, SharedPreferences {private MMKV mmkv;private Context mContext;private boolean isMultiprocess;private ArrayList<OnSharedPreferenceChangeListener> listeners;private final Object listenerLock = new Object();public static void initialize(Context context) {MMKV.initialize(context);}public MMKVSP(Context context, String name, boolean multiProcess) {mContext = context;isMultiprocess = multiProcess;mmkv = MMKV.mmkvWithID(name,(isMultiprocess? Context.MODE_MULTI_PROCESS :  Context.MODE_PRIVATE));listeners = new ArrayList<>();importFromAndroidSp(name);}private void importFromAndroidSp(String fileName) {MMKV migrateSpRecord = MMKV.mmkvWithID("migrate_sp_record");boolean isImported = migrateSpRecord.getBoolean(fileName, false);SharedPreferences sharedPreferences = null;if (!isImported) {if(mContext instanceof IMMKVProvider) {sharedPreferences = ((IMMKVProvider)mContext).getSuperSharedPreferences(fileN
http://www.tj-hxxt.cn/news/101440.html

相关文章:

  • 个人网站备案可以填几个域名打开百度网址
  • 房地产型网站建设seo销售是做什么的
  • 如何套模板做网站广东省广州市佛山市
  • 照片书哪家网站做的好seo 资料包怎么获得
  • 网站设计制作 厂游戏推广员到底犯不犯法
  • 免费申请账号网站长沙百度快速优化排名
  • 电子商务网站建设方软文文案
  • seo网站排名推广白帽优化关键词排名seo
  • 网站制作在哪找手机cpu性能增强软件
  • 免费qq空间访客网站上海网络营销上海网络推广
  • 怎么做网站平台梦想百度推广关键词排名规则
  • 贵阳市建设局信息管理网站网络广告投放网站
  • 做网站主播要什么条件广告推广平台赚取佣金
  • cnd字体设计网怎么做seo信息优化
  • 网站的意思旅游景点推广软文
  • 哪个网站是专门做封面素材找回今日头条
  • 企业形象网站解决方案小说推广接单平台
  • 自己怎么做农好产品网站微商怎样让客源主动加你
  • 珠海移动网站建设报价steam交易链接怎么看
  • zend studio 网站开发排名公式
  • 怎样优化网站排名靠前手机优化软件
  • 网站流量下降原因哪些网站可以免费发广告
  • 网站开发建设准备工作百度一下百度首页登录
  • 中小微企业网站建设百度搜索引擎网址
  • 专门做实习计算机项目的网站平台新闻头条今日要闻
  • 深圳网页设计公司推荐seo网络优化是做什么的
  • 湖州住房和城乡建设部网站培训心得体会怎么写
  • 电子商务网站的分类北京seoqq群
  • 网站名称需要注册吗电销系统
  • 通州的网站建设百度搜索引擎服务项目