LitePal使用心得(激进查询等)以及小问题记录

简介: LitePal使用心得(激进查询等)以及小问题记录

首先:AndroidManifest中Activity的launchMade不能瞎写,需要着重理解。


"standard"(默认启动模式)


standard是默认的启动模式,即如果不指定launchMode属性,则自动就会使用这种启动模式。这种启动模式表示每次启动该Activity时系统都会为创建一个新的实例,并且总会把它放入到当前的任务当中。声明成这种启动模式的Activity可以被实例化多次,一个任务当中也可以包含多个这种Activity的实例。


"singleTop"


这种启动模式表示,如果要启动的这个Activity在当前任务中已经存在了,并且还处于栈顶的位置,那么系统就不会再去创建一个该Activity的实例,而是调用栈顶Activity的onNewIntent()方法。声明成这种启动模式的Activity也可以被实例化多次,一个任务当中也可以包含多个这种Activity的实例。


举个例子来讲,一个任务的返回栈中有A、B、C、D四个Activity,其中A在最底端,D在最顶端。这个时候如果我们要求再启动一次D,并且D的启动模式是"standard",那么系统就会再创建一个D的实例放入到返回栈中,此时栈内元素为:A-B-C-D-D。而如果D的启动模式是"singleTop"的话,由于D已经是在栈顶了,那么系统就不会再创建一个D的实例,而是直接调用D Activity的onNewIntent()方法,此时栈内元素仍然为:A-B-C-D。


"singleTask"


这种启动模式表示,系统会创建一个新的任务,并将启动的Activity放入这个新任务的栈底位置。但是,如果现有任务当中已经存在一个该Activity的实例了,那么系统就不会再创建一次它的实例,而是会直接调用它的onNewIntent()方法。声明成这种启动模式的Activity,在同一个任务当中只会存在一个实例。

注意这里我们所说的启动Activity,都指的是启动其它应用程序中的Activity,因为"singleTask"模式在默认情况下只有启动其它程序的Activity才会创建一个新的任务,启动自己程序中的Activity还是会使用相同的任务,具体原因会在下面 处理affinity 部分进行解释。


"singleInstance"


这种启动模式和"singleTask"有点相似,只不过系统不会向声明成"singleInstance"的Activity所在的任务当中再添加其它Activity。也就是说,这种Activity所在的任务中始终只会有一个Activity,通过这个Activity再打开的其它Activity也会被放入到别的任务当中。


再举一个例子,Android系统内置的浏览器程序声明自己浏览网页的Activity始终应该在一个独立的任务当中打开,也就是通过在<activity>元素中设置"singleTask"启动模式来实现的。这意味着,当你的程序准备去打开Android内置浏览器的时候,新打开的Activity并不会放入到你当前的任务中,而是会启动一个新的任务。而如果浏览器程序在后台已经存在一个任务了,则会把这个任务切换到前台。


其实不管是Activity在一个新任务当中启动,还是在当前任务中启动,返回键永远都会把我们带回到之前的一个Activity中的。但是有一种情况是比较特殊的,就是如果Activity指定了启动模式是"singleTask",并且启动的是另外一个应用程序中的Activity,这个时候当发现该Activity正好处于一个后台任务当中的话,就会直接将这整个后台任务一起切换到前台。此时按下返回键会优先将目前最前台的任务(刚刚从后台切换到最前台)进行回退,下图比较形象地展示了这种情况:


b521335b2ba949adacdcb99ec8c9ac0.png



上面的内容copy了郭神的原话。只是为了记忆。下面开始说LitePal,一定要注意LitePal的激进查询,

mItem = LitePal.find(Items.class, cid, true);

这才是激进查询。下面这种是普通查询。

mItem = LitePal.find(Items.class, cid)

普通查询查询不到所关联的多表里面的内容。只有激进查询才可以。这是个教训。。。


目录
相关文章
|
6月前
|
Ubuntu 测试技术 Linux
百度搜索:蓝易云【Ubuntu系统打RT实时内核补丁教程】
现在,你已经成功在Ubuntu系统上打上RT实时内核补丁,并且系统将使用RT内核运行,提供更好的实时性能。请注意,内核编译和替换是一项复杂的操作,建议在实施前备份重要数据,并在测试环境中进行验证。
65 2
|
6月前
|
缓存 算法 Java
Linux内核新特性年终大盘点-安卓杀后台现象减少的背后功臣MGLRU算法简介
MGLRU是一种新型内存管理算法,它的出现是为了弥补传统LRU(Least Recently Used)和LFU(Least Frequently Used)算法在缓存替换选择上的不足,LRU和LFU的共同缺点就是在做内存页面替换时,只考虑内存页面在最近一段时间内被访问的次数和最后一次的访问时间,但是一个页面的最近访问次数少或者最近一次的访问时间较早,可能仅仅是因为这个内存页面新近才被创建,属于刚刚完成初始化的年代代页面,它的频繁访问往往会出现在初始化之后的一段时间里,那么这时候就把这种年轻代的页面迁移出去
|
6月前
|
搜索推荐 关系型数据库 MySQL
手把手教你搭建子比主题的系统(亲测可用)|学习版本|虚拟知识付费平台比较合适
搭建Zibll子比主题涉及以下步骤: 1. 服务器环境需支持PHP 7.0+(推荐7.4+)和MySQL。 2. 下载并安装WordPress,可从官方站点获取最新版本。 3. 从指定链接下载子比主题文件。 4. 在WordPress后台上传并启用子比主题,配置固定链接和伪静态,例如使用宝塔面板。 5. 调整主题设置,如Logo和网站关键词。 6. 安装必要插件,如Yoast SEO和Contact Form 7,根据实际需求选择。 7. 完成后测试和调试网站功能。 记得参考官方文档以获取详细指导。
|
6月前
|
数据安全/隐私保护
自动阅读专业版第六次更新
自动阅读专业版第六次更新
36 0
|
SQL 存储 分布式计算
一次Delta lake 0.8.0 踩坑有感:使用新框架的新版本,一定要今早关注多多关注社区动态
一次Delta lake 0.8.0 踩坑有感:使用新框架的新版本,一定要今早关注多多关注社区动态
|
存储 JSON NoSQL
RedisJson特性让我放弃了MongoDB,也让我放弃了Hash,我就问你们香不香?
RedisJson特性让我放弃了MongoDB,也让我放弃了Hash,我就问你们香不香?
|
机器学习/深度学习 人工智能 测试技术
神经引擎这回行了吗?iPhone 14 Core ML性能测评已出
神经引擎这回行了吗?iPhone 14 Core ML性能测评已出
179 0
|
存储 人工智能 文字识别
更新整理了一大波热门免费可用的API大全
更新整理了一大波热门免费可用的API大全
318 0
|
关系型数据库
鲲鹏云上课实验遇到问题一之pgsql文件找不到处理方式
鲲鹏云上课实验遇到问题一之pgsql文件找不到处理方式
|
Ruby Perl
Cocoapods迄今为止的安装使用方法,更新下网上众多有些过时的操作
Cocoapods迄今为止的安装使用方法,更新下网上众多有些过时的操作
954 0