视频直播源码,实现本地存储搜索历史记录
视频直播源码,实现本地存储搜索历史记录
1、build.gradle:
1 | <br>dependencies {<br> api 'com.tencent:mmkv-static:1.2.10' <br>} |
2、Application初始化:
1 | <br> //rootDir是本地存储文件夹<br>String rootDir = MMKV.initialize(this);<br>MMKV kv = MMKV.mmkvWithID("search_history_id", MMKV.MULTI_PROCESS_MODE);<br>App.kv = kv;<br> <br> <br>//App是一个公共类<br>public class App {<br> public static MMKV kv;<br>} |
3、 保存、获取历史记录Util类 把之前用的sp注释掉了 如果想用也可以参考
1 | <br> public class SearchHistoryUtil {<br> //保存搜索历史记录<br> public static void savaSearchWord(String keyword){<br>// String searchHistoryData = TeSharedPreferences.getInstance().getString("search_history");<br> String searchHistoryData = App.kv.decodeString("search_history");<br> if(searchHistoryData != null){<br> String[] tmpHistory = searchHistoryData.split(","); //逗号截取 保存在数组中<br> List<String> historyList = new ArrayList<String>(Arrays.asList(tmpHistory)); //将该数组转换成ArrayList<br> if (historyList.size() > 0) {<br> //1.移除之前重复添加的元素<br> for (int i = 0; i < historyList.size(); i++) {<br> if (keyword.equals(historyList.get(i))) {<br> historyList.remove(i);<br> break;<br> }<br> }<br> historyList.add(0, keyword); //将新输入的文字添加集合的第0位也就是最前面(2.倒序)<br> if (historyList.size() > 10) {<br> historyList.remove(historyList.size() - 1); //3.最多保存10条搜索记录 删除最早搜索的那一项<br> }<br> //逗号拼接<br> StringBuilder sb = new StringBuilder();<br> for (int i = 0; i < historyList.size(); i++) {<br> sb.append(historyList.get(i) + ",");<br> }<br> //保存到sp<br>// TeSharedPreferences.getInstance().putString("search_history",sb.toString());<br> App.kv.encode("search_history", sb.toString());<br> } else {<br> //之前未添加过<br>// TeSharedPreferences.getInstance().putString("search_history",keyword);<br> App.kv.encode("search_history", keyword);<br> }<br> }else{<br> App.kv.encode("search_history", keyword);<br> }<br> <br> Log.e("search_history", "搜索历史记录:" + App.kv.decodeString("search_history"));<br> }<br> <br> //获取搜索记录<br> public static List<String> getSearchHistory() {<br>// String longHistory = TeSharedPreferences.getInstance().getString("search_history");<br> String longHistory = App.kv.decodeString("search_history");<br> if(longHistory != null){<br> String[] tmpHistory = longHistory.split(","); //split后长度为1有一个空串对象<br> List<String> historyList = new ArrayList<String>(Arrays.asList(tmpHistory));<br> if (historyList.size() == 1 && historyList.get(0).equals("")) { //如果没有搜索记录,split之后第0位是个空串的情况下<br> historyList.clear(); //清空集合,这个很关键<br> }<br> return historyList;<br> }<br> return new ArrayList<>();<br> } |
4、sp代码
1 | <br>import android.content.Context;<br>import android.content.SharedPreferences;<br> <br>import com.jumei.base.app.AppGlobalVar;<br> <br>import java.util.HashMap;<br>import java.util.Map;<br> <br> public class TeSharedPreferences {<br> <br> private static final String APP_COMMON = "app_common" ;<br> public static final String APP_COOKIES = "app_cookies" ;<br> public static final String APP_INIT = "app_init" ;<br> <br> private final SharedPreferences sharedPreferences;<br> <br> private static final HashMap<String, TeSharedPreferences> preferencesManagerHashMap = new HashMap<>();<br> <br> public static TeSharedPreferences getInstance() {<br> return getInstance(APP_COMMON);<br> }<br> <br> public static TeSharedPreferences getInstance(String fileName) {<br> TeSharedPreferences instance = preferencesManagerHashMap.get(fileName);<br> if (instance == null) {<br> instance = new TeSharedPreferences(fileName);<br> preferencesManagerHashMap.put(fileName, instance);<br> }<br> <br> return instance;<br> }<br> <br> private TeSharedPreferences(String fileName) {<br> sharedPreferences = App.appContext.getSharedPreferences(fileName, Context.MODE_PRIVATE);<br> }<br> <br> public void putString(String key, String value) {<br> sharedPreferences.edit().putString(key, value).apply();<br> }<br> <br> public void putBoolean(String key, boolean value) {<br> sharedPreferences.edit().putBoolean(key, value).apply();<br> }<br> <br> public void putInt(String key, int value) {<br> sharedPreferences.edit().putInt(key, value).apply();<br> }<br> <br> public void putFloat(String key, float value) {<br> sharedPreferences.edit().putFloat(key, value).apply();<br> }<br> <br> public String getString(String key) {<br> return sharedPreferences.getString(key, "" );<br> }<br> <br> public String getString(String key, String defValue) {<br> return sharedPreferences.getString(key, defValue);<br> }<br> <br> public boolean getBoolean(String key, boolean defValue) {<br> return sharedPreferences.getBoolean(key, defValue);<br> }<br> <br> public int getInt(String key, int defValue) {<br> return sharedPreferences.getInt(key, defValue);<br> }<br> <br> public float getFloat(String key, float defValue) {<br> return sharedPreferences.getFloat(key, defValue);<br> }<br> <br> public Map<String, ?> getAll() {<br> try {<br> return sharedPreferences.getAll();<br> } catch (Exception e) {<br> return null;<br> }<br> }<br> <br> public void clear() {<br> SharedPreferences.Editor editor = sharedPreferences.edit();<br> editor.clear();<br> editor.apply();<br> }<br>} |
以上就是 视频直播源码,实现本地存储搜索历史记录,更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现