sqlite3查看数据库
sqlite3查看数据库.db 文件通常是 SQLite 数据库文件。Room 是 Android 官方推荐的本地数据库库,它底层使用的就是 SQLite。因此,Room 生成的 .db 文件本质上就是一个标准的 SQLite 数据库文件。 你可以通过以下方式在电脑上查看 .db 文件的内容: ✅ 方法一:使用 sqlite3 命令行工具(推荐)步骤如下: 安装 sqlite3 工具(如果尚未安装): macOS(通常已预装):1sqlite3 --version Windows: 下载地址:https://www.sqlite.org/download.html 下载 sqlite-tools-win32-*.zip,解压后将 sqlite3.exe 加入系统 PATH。 Linux(Ubuntu/Debian):1sudo apt install sqlite3 打开终端(命令行)并进入 .db 文件所在目录,例如: 1cd /path/to/your/database/ 使用 sqlite3 打开数据库: 1sqlite3 your_database...
Android开发方向
Android开发方向Android系统开发主要分为两个大的方向:应用开发(上层开发)和系统层开发(底层开发)。每个方向都有其特定的关注点和技术要求。 应用开发方向应用开发者主要关注于用户界面的设计和功能的实现。随着经验的积累,他们可能会转向以下领域: 用户体验设计:专注于用户界面和交互体验的设计。 架构设计:学习并实践不同的软件设计模式,如MVC、MVP、MVVM等,以构建可维护、可扩展的应用程序。 性能优化:掌握如何优化应用性能,包括内存管理、响应速度等方面。 跨平台开发:学习使用Flutter、React Native等技术来创建可以同时运行在Android和iOS上的应用。 特定领域的应用开发:例如音视频开发、游戏开发等。 系统层开发方向系统层开发者则更关注于Android系统的底层实现,包括但不限于: Framework层开发:深入了解Android框架的工作原理,包括Activity Manager Service (AMS)、Window Manager Service (WMS)等核心服务的源码解析。 BSP(Board Support Package)驱动...
Flutter常用指令
Flutter常用指令Flutter 的常用指令主要分为 开发工具命令(flutter 命令行)和 Dart 工具命令(dart 命令行),以下是核心指令整理: 一、Flutter 常用命令1. 项目创建与运行 创建新项目 1flutter create <项目名称> 运行项目(自动选择设备) 1flutter run 指定设备:flutter run -d <设备ID>(通过 flutter devices 查看设备ID) 生产模式:flutter run --release 调试模式:flutter run --debug 快捷指令 r Hot reload. R Hot restart. h List all available interactive commands. d Detach (terminate “flutter run” but leave application running). c Clear the screen q Quit (terminate the application on the device)...
启动模式 - intent
启动模式 - intent好的,我们来详细对比 singleTop 与其他三种标准启动模式(standard, singleTask, singleInstance)在 Intent 获取方式 以及 核心行为 上的区别。 核心区别在于:系统何时会创建新实例,何时会复用旧实例,以及复用时如何传递新的 Intent。 1. standard (标准模式) 行为:这是默认模式。每次启动该 Activity,系统都会创建一个新的实例,并将其压入启动它的 Activity 所在的任务栈(Task)中。可以有多个实例,也可以在不同任务栈中存在。 Intent 获取: 只在 onCreate() 中获取。因为每次都是新实例,所以新的 Intent 总是通过 onCreate(Bundle savedInstanceState) -> getIntent() 来获取。 onNewIntent() 永远不会被调用,因为没有复用旧实例的情况。 适用场景:大多数常规 Activity,例如详情页、设置页等,每次打开都希望是独立的新页面。 2. singleTop (栈顶复用模式) 行为...
Repo upload的细节
Repo upload的细节1git config --get remote.gerrit.review 输出: 1ssh://gerrit 要正确设置review url 到底应该是SSH还是HTTP???12cd ~/falconrepo forall -c 'git config --replace-all remote.gerrit.review http://10.10.1.127:30090/' 然后验证: 12cd prebuilts/sdkgit config --get remote.gerrit.review ✅ 应该输出: 1http://10.10.1.127:30090/ 🔁 建议对 cust/app/orion-sipclient 也执行一次验证和修复! 🧠 为什么 review URL 必须是 HTTP,不能是 SSH?因为: commit-msg hook 是从 http://.../tools/hooks/commit-msg 下载的 Gerrit Web UI 链接是 http://.../c/12345...
git switch和checkout的区别
git switch和checkout的区别git switch 和 git checkout 都可以用来切换分支,但它们的设计理念、功能和使用方式有所不同。git switch 是 Git 2.23 版本(2019年发布)引入的新命令,旨在将 git checkout 的功能进行拆分,使其职责更单一、更清晰。 以下是它们的主要区别: 1. 设计目的与职责 git checkout: 这是一个“多面手”命令,功能非常复杂。它既可以用来切换分支,也可以用来恢复工作区文件(丢弃修改)、创建新分支等。这种多功能性使得它容易混淆,尤其是在处理文件和分支时。 git switch: 这是一个“单一职责”命令,专门用于切换分支。它的设计目的就是让分支切换操作更清晰、更安全、更直观。 2. 创建新分支的方式 git checkout: 创建并切换到新分支:git checkout -b <new-branch-name> 从特定提交创建新分支:git checkout -b <new-branch-name> <start-point> git swi...
如何使用AsyncTask
你会使用AsyncTask吗?前言AsyncTask 的本身其实是对 Handler 机制的封装,目的是让异步操作的实现变得简单,更多的关注业务实现。 基本步骤 创建一个继承自 AsyncTask 的类。 确定 AsyncTask<Params(参数), Progress(进度), Result(结果)> 泛型的三个参数类型。 重写以下方法: 1234protected void onPreExecute() // 可选protected abstract Result doInBackground(Params... params); // 必须重写protected void onPostExecute(Result result) // 可选,但一般都会重写protected void onProgressUpdate(Progress... values) // 可选,如果不需要进度可以写 Void(大写的 V) 注意: onPreExecute 方法会在execute方法调用前调用,运行在UI线程,可以做进度框的展示等 ; doInB...
有一种优雅的架构叫MVP架构
前言MVP 是 Model-View-Presenter 的缩写,是一种经典的 Android 应用架构模式。它将业务逻辑从 Activity/Fragment 中抽离出来,使代码更易测试、维护和复用。软件开发总是强调一个重点,就是尽可能的将系统做到高内聚低耦合,各模块各司其职,职责单一,逻辑清晰。 从上图可以清晰的理解什么是MVP(Model、View、Presenter)架构,其实MVP是从MVC模式衍生出来的,目的就是为了让视图层view和模型层model之间解耦。 它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。在MVC里,View是可以直接访问Model的!从而,View里会包...
Android自学路线
前言很多初学者面对 Android 开发感到迷茫,不知道从何入手。本文提供一条清晰的自学路径,帮助你系统掌握 Android 开发技能。 第一阶段:Java 基础 面向对象(类、对象、继承、多态) 异常处理 集合框架(List、Map、Set) 多线程基础 IO 流 推荐书籍:《Java核心技术 卷I》 第二阶段:Android 基础组件 Activity 生命周期 Intent 与页面跳转 布局(LinearLayout、RelativeLayout、ConstraintLayout) 常用控件(TextView、Button、EditText、ListView、RecyclerView) 资源文件(strings.xml、colors.xml、dimens.xml) 第三阶段:进阶知识 网络请求(OkHttp、Retrofit) 数据存储(SharedPreferences、SQLite、Room) 异步处理(Handler、AsyncTask、Thread、ExecutorService) 广播与服务(BroadcastReceiver、Service) 权限管理(...
如何创建和使用SQLite数据库
前言什么是SQLite?SQLite是一款轻型数据库,它遵守ACID,能够嵌入到使用它的应用程序中。作为一个自包含的、基于文件的数据库,SQLite提供了非常出色的工具集能够处理所有类型的数据,与托管在服务器上基于进程的关系型数据库相比它的约束更少,也更易用。 当应用程序使用SQLite时,SQLite并非作为一个独立进程通过某种通信协议(例如socket)与应用程序通信,而是作为应用程序的一部分,应用程序通过调用SQLite的接口直接访问数据文件。 为什么要用 SQLite? 不需要一个单独的服务器进程或操作的系统(无服务器的)。 SQLite 不需要配置,这意味着不需要安装或管理。 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。 SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。 SQLite 是自给自足的,这意味着不需要任何外部的依赖。 SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。 SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。 SQLite 使...




