坑:Litepal save方法返回true却没有保存

在开发 Madoka 日记时,做到导出导入的功能时,我想偷个懒导出直接用 Gson 将 Java 对象转换为 json 然后放在 txt 中,导入的时候再将 json 转为 javaBean 就行啦。 而数据库我用的是 Litepal 直接搞,使用这个库的好处就是速度快,方便,适合新手。 但其实 sqlite 的语法和一些其他的语句并不难,所以用这个库就是为了方便… 使用 Litepal 储存数据时,需要调用 save() 方法。 这里我就遇到了一个问题,明明 save() 方法返回的是 true ,但数据库里没有需要保存的数据啊? Gson gson = new Gson(); Diary diary = gson.fromJson(json, Diary.class); return diary.save(); 这是调用 Gson 将 json 转换为 javabean 对象。 明明 Diary 的内容全是正确的,我开始询问度娘。 结果没找到跟我的问题直接相关的文章,结果我看到了有个人在吐槽啥 setting getting,我就想到了会不会是因为没有调用 Diary 的构造方法? Diary 作为一个 Litepal 的,它是继承自 LitePalSupport 的,会不会是因为没有调用 LitePalSupport 的构造方法呢? 我将导入代码改了一下: Gson gson = new Gson(); Diary diary = gson....

February 24, 2020 · 1 分钟 · LingC

Android Shizuku源码分析 第二篇

本文深入分析了 Shizuku 的启动过程,特别是 Starter 类的 main 方法是如何被调用的。文章首先回顾了 Shizuku 的基本概念,并介绍了通过 adb 命令激活 ShizukuService 的过程,重点分析了 start.sh 脚本的执行。当用户通过 ShizukuManager 启动应用时,start.sh 脚本被调用,该脚本负责设置环境并执行 libshizuku.so 文件。文章详细描述了 ShizukuManager 在启动时如何写入 start.sh 文件及其相关的 dex 文件路径。接着,文章探讨了 libshizuku.so 中的 main 方法,说明了如何通过 app_process 启动 Java 类 moe.shizuku.server.Starter。在 Starter 类的 main 方法中,创建了 ShizukuService 实例,从而完成了 ShizukuService 的启动。最后,作者总结了整个过程,强调了用户通过简单的 adb 命令如何触发一系列复杂的操作,最终实现 Shizuku 的功能。

February 4, 2020 · 5 分钟 · LingC

Android Shizuku源码分析

本文分析了 Shizuku 的源码,介绍了其如何通过 Binder 实现与 Android 系统服务的交互。Shizuku 应用引导用户以 root 或 adb 方式运行服务进程,利用 ShizukuBinderWrapper 进行系统隐藏 API 的调用。文章详细探讨了 ShizukuBinderWrapper 的构造、transact 方法及其与 IShizukuService 的通信过程,最后简要提及 ShizukuService 的启动流程。作者计划进一步深入分析 Shizuku 的启动机制。

February 2, 2020 · 5 分钟 · LingC

Android 监听第三方Activity的一举一动

这篇文章主要记录了作者在2019年初的个人感受和一些技术探索。作者回顾了过去一年的经历,感到没有太多进展,并提到冬季的天气和国内的传染病情况。尽管在家中待得久了,作者也提到了一些娱乐活动,比如观看动画和春晚,但整体上对新番的期待逐渐减弱。在技术方面,作者分享了在Android开发中监听Activity启动的需求,探讨了几种方法来获取Activity的类名。首先,作者提到使用ActivityManager的getRunningTasks方法,但由于权限限制,这种方法不可行。接着,作者提到UsageStatsManager只能获取应用包名,而无法获取Activity类名。最终,作者发现了IActivityController接口,并通过使用Shizuku工具来调用系统API,从而实现了监听Activity启动的功能。总结来说,文章结合了个人生活感受与技术探索,展示了作者在面对生活和技术挑战时的思考与解决方案。

February 1, 2020 · 2 分钟 · LingC

Android笔记#1 View的事件分发机制解析

本文总结了《Android艺术开发探索》中关于View事件分发机制的内容。事件序列从ACTION_DOWN开始,经过多个ACTION_MOVE,最后以ACTION_UP结束。事件传递顺序为Activity -> Window -> DecorView -> RootView。事件分发主要通过dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent三个方法实现。ViewGroup的onInterceptTouchEvent默认返回false,子View可通过OnTouchListener处理事件。总结指出,事件分发机制确保一个事件序列只能被一个View拦截和消耗,且OnTouchListener优先级高于onTouchEvent。

August 14, 2019 · 6 分钟 · LingC

知乎日报的问题

作者在暑假期间开始开发一个第三方的知乎日报客户端,使用MVP架构。遇到了一些问题,如全局异常处理和JSON解析,选择使用Picasso加载图片。为了解决WebView中图片宽度过大的问题,作者通过JavaScript调整图片大小。最终,作者完成了基本的加载和查看功能,并在GitHub上分享了代码。尽管开发过程充满挑战,作者仍然享受这个过程。

July 4, 2019 · 1 分钟 · LingC