入门

Android开发入门教程(六):暂停和恢复Activity

南笙酒味 提交于 2019-12-05 22:11:19
说明:本文是我自己对官方入门教程(Training)的翻译,仅仅是为了记录自己的学习过程。由于本人英语水平太低,基本上是靠金山词霸加上自己的理解,所以翻译的不好。如果你有好的意见请留言,谢谢! 暂停和恢复Activity(Pausing and Resuming an Activity) 在正常的应用程序使用,前台activity有时会被其他可视化组件遮挡,从而造成activity的暂停。例如,当一个半透明的activity打开时(如在一个风格对话框),以前的activity就暂停了。只要activity仍然是部分可见,但目前没有获得焦点,它就依然处于暂停状态。 然而,一旦activity被完全遮挡住,并且对用户不可见了,那么它就停止了(这是下一课需要讨论的内容)。 当你的activity进入暂停状态,系统将对你的Activity调用onPause()方法。在此方法中,你可以停止那些在暂停状态时不应该继续进行的行为(如视频播放),或者持久化一些需要永久保存的信息,以使得用户继续留在你的应用程序。如果用户返回到你的activity,系统将从暂停状态中恢复它,并调用onResume()方法。 注意:当你的activity接收到一个对onPause()的调用时,它可能是一个迹象,表明activity将暂停一会儿,然后用户还会返回到你的activity。然而,它通常是第一个迹象

QEMU1.3.0的源码分析三:user model之linux

老子叫甜甜 提交于 2019-12-05 19:05:43
作者: snsn1984 从源码目录来看,user model有两块内容bsd-user和linux-user。我主要研究了下linux-user这种情况。 首先要提一下通常容易关注的焦点,linux-user下的函数入口点:/源码目录/linux-user/main.c中的 Line:3388 int main(int argc, char **argv, char **envp). 找到了入口函数,就可以根据这个main函数中的调用关系来看看这个情况下的主要执行流程和动作了。 int main(int argc, char **argv, char **envp) { module_call_init(MODULE_INIT_QOM); qemu_cache_utils_init(envp); /*初始化了tcg的相关部分,包含了cpu动态转化的一些初始化操作。*/ tcg_exec_init(0); cpu_exec_init_all(); /*包含了虚拟cpu的初始化*/ env = cpu_init(cpu_model); /*加载可执行程序,即Guest code*/ ret = loader_exec(filename, target_argv, target_environ, regs, info, &bprm); target_set_brk(info->brk)

七天LLVM零基础入门(Linux版本)------第三天

馋奶兔 提交于 2019-12-05 13:53:51
作者: snsn1984 第二天的任务中的LLVM IR的文档( http://llvm.org/docs/LangRef.html ) 对于初学者来说,看起来一定很费劲,内容繁杂,找不到头绪,看了后边的忘记了前面的,这些都是很正常的。但是,这里需要注意的是,不管多烦躁,一定要硬着 头皮先把这个文档通读一遍,在读的同时,可以自己写一个小程序,根据前面学习的使用clang的命令将该程序转换成.ll格式的,然后在阅读文档的同时, 对照.ll格式的文件,去实际的看一看,到底说的是什么样的东西,然后这样才能加深印象,才能让阅读文档变得不那么艰难。 下面开始今天的学习任务: 第一步:复习LLVM IR的文档( http://llvm.org/docs/LangRef.html ) 复习该文档的时候,略微有些侧重点,就是该文档从开始的部分,一直到 http://llvm.org/docs/LangRef.html#other-values 这个部分之前,都要仔细复习一遍。后面的内容,大致的过一遍,以后要用到的时候,可以找到地方就行。 第二步:阅读文档 ( http://llvm.org/docs/ProgrammersManual.html ) 这个文档从名字就可以看出来是干什么用的,这个就是LLVM的编程指引,相对来说这个文档没那么长,但是里面的东西很重要,希望在阅读的过程中 认真阅读。同时

【讲古堂】大数四则运算加减乘除(入门篇)

帅比萌擦擦* 提交于 2019-12-04 22:06:04
行家看门道,外行看热闹。 加 IF(LEN(TEXT(G7,"00000000"))>8,LEFT(TEXT(G7,"00000000"),LEN(TEXT(G7,"00000000"))-8),0) VALUE(RIGHT(TEXT(G7,"00000000"),8)) 减 G15-G17 IF(G20<0,-1,0) IF(F21<0,100000000,0) G21+G22+G20 乘 G27*$G$29 VALUE(IF(LEN(TEXT(G32,"00000000"))>8,LEFT(TEXT(G32,"00000000"),LEN(TEXT(G32,"00000000"))-8),0)) VALUE(RIGHT(TEXT(G32,"00000000"),8)) G33+G34 除 F45*100000000 MOD(G39+G44,$G$41) INT((G39+G44)/$G$41) 其他的等下一片吧。 (提高篇: http://my.oschina.net/dubenju/blog/644257 ) 来源: oschina 链接: https://my.oschina.net/u/660460/blog/637181

QEMU1.3.0的源码分析一 : 源码目录简介

夙愿已清 提交于 2019-12-04 21:25:30
作者: snsn1984 最近在研究QEMU,读了一些QEMU的源码,因为涉及的东西比较多,找到的资料又都比较破碎,不太完整。所以将最近的成果总结一下。 相比其他的开源软件来说,QEMU源码下面目录比较多,下面就先把这些目录的内容大致整理一下。 docs/ 包含了一些文档,说实话,对初学者来说,读这些文档压根没有头绪 hw/ 包含了所有支持的硬件设备 include/ 包含了一些头文件 linux-user/ 包含了linux下的用户模式的代码 target-XXX/ 包含了QEMU目前所支持guset端的处理器架构。包 括:alpha,arm,cris,i386,lm32,m68k,microblaze,mips,openrisc,ppc,s390x,sh4,sparc,unicore32,xtensa. 此处的XXX就是指这其中的一种架构。包含的代码的主要功能是将该guest架构的指令翻译成TCG OP代码。也就是target-arm下的代码就是将arm架构的指令翻译成TCG OP。这些目录占了源码目录的很大一部分。 tcg/ 包含了动态翻译工具tcg的源码部分,主要是将TCG OP转化为host binary的部分。这个目录下也包含了多个架构名字命名的目录,每个目录下存放着针对该架构的代码。后续会详细介绍。 test/ 从名字上可以看出,应该是存放测试部分的代码

七天LLVM零基础入门(Linux版本)------第二天

混江龙づ霸主 提交于 2019-12-04 17:04:09
作者: snsn1984 在第一天的时候,我们简单了解了llvm和clang。今天我们继续对LLVM进行学习。 第一步:学会如何查找LLVM的文档 LLVM的文档很多,也很全面,是开源软件中文档比较全面并且比较细致的,这是很难得的一个事情。所以只要和LLVM打交道,就一定要学会并且善于去使用这些LLVM的文档。 因为LLVM文档比较多,初学者可能不太容易搞清楚,我之前写过一个关于LLVM的文档的博文,可以参考: http://blog.csdn.net/snsn1984/article/details/8165529 这个博文把文档的地址和文档的分类进行了简单介绍。 第二步:熟悉LLVM的IR IR是 intermediate representation 的缩写,顾名思义是中间表示的的缩写。中间表示已经被越来越多的编译器所采用,传统的编译器多采用汇编语言作为自己的中间语言,而现在大一些的编译器都有了自己专属的中间表示。LLVM IR的官方文档地址: http://llvm.org/docs/LangRef.html 简要介绍可参加我之前的博文: http://blog.csdn.net/snsn1984/article/details/8037414 LLVM IR是整个LLVM框架中极其重要的一部分,一般与LLVM相关的项目都无法避开LLVM IR这个部分

七天LLVM零基础入门(Linux版本)------第五天

我是研究僧i 提交于 2019-12-04 17:03:55
作者: snsn1984 第一步:复习文档 Write an LLVM pass http://llvm.org/docs/WritingAnLLVMPass.html 第二步:阅读LLVM编程规范 http://llvm.org/docs/CodingStandards.html 编程规范是编程中需要注意的基础点,代码风格符合不符合规范,将会直接影响整个代码的可读性和代码质量。 所以一定要认真阅读,并且在自己编写代码的过程中要遵守规范。最容易犯错误的两点就是缩进和空格。不同 的编程规范的缩进是不同的,但是对TAB的限制是大多数规范都有的。任何不是必须的空格,都是不应该出现 的。 第三步:参照LLVM编程规范写Pass例子 编写一个Pass,删除掉程序中所有的没有使用的指令。比如: %2 = add i32 %1, 1; %3 = add i32 %2, 1; ret; 那么因为%3并没有被使用,所以指令%3 = add i32 %2, 1; 就可以被删除了,删除之后,如果%2没有别的地方使用, 那么这条语句也可以删除掉了。依次循环下去,最后得到的是一个没有无用的代码的程序。 延伸阅读: http://en.wikipedia.org/wiki/Dead_code_elimination ------------------------------------------

七天LLVM零基础入门(Linux版本)------第六天

天涯浪子 提交于 2019-12-04 17:03:42
作者: snsn1984 第一步:对优化代码的pass继续进行深入的分析 首先检查一下第五天中的Pass练习,什么情况下可以进行优化,什么情况下不可以进行优化。 可以参照系统自带的Pass: http://llvm.org/docs/doxygen/html/DCE_8cpp_source.html 需要将判断是否需要优化的主要函数 isInstructionTriviallyDead (I, TLI) 进行深入的分析。函数的具体内容位置: http://llvm.org/docs/doxygen/html/Local_8cpp_source.html#l00269 将第五天要求的pass进一步进行完善。 第二步:学习LLVM Test 参照LLVM文档: http://llvm.org/docs/TestingGuide.html 此处需要注意的是,在llvm的build目录下,在已经运行make成功的情况下,直接进行make check,可以运行llvm 自带的所有测试。 此处可参考我的一个博文: http://blog.csdn.net/snsn1984/article/details/8617068 第三步:写一个测试用例 写一个测试程序输出的测试用例。 可以测试最简单的hello world程序,测试该程序的输出的是不是程序本身期望输出的“hello world”。

七天LLVM零基础入门(Linux版本)------第七天

断了今生、忘了曾经 提交于 2019-12-04 17:03:32
作者: snsn1984 这是这一次零基础入门的最后一天,这次的主要任务是实战一个Pass。 任务描述: 实现一个Pass,该Pass可以读取一个程序中所有的for循环的循环头的名字并输出。 同时,实现一个测试用例去测试输出的结果是否正确。该Pass的输入应该包含嵌套 循环。 提示: An llvm::FunctionPass using llvm::LoopInfo LoopInfo &LI=getAnalysis<LoopInfo>() //In runOnFunction getAnalysisUsage(AnalysisUsage &AU) //In structure std::vector<Loop*> workList(LI.begin(), LI.end()); 在这个任务完成之后,应该已经达到可以达到可以分析和实现LLVM的Pass,查找和 分析LLVM的源码,查找需要使用的文档,并且可以知道下一步该如何自己学习LLVM。 -------------------------------------转载请注明出处---------------------------------------------------- 来源: oschina 链接: https://my.oschina.net/u/860439/blog/110810

七天LLVM零基础入门(Linux版本)------总结

岁酱吖の 提交于 2019-12-04 17:03:18
七天LLVM零基础入门这系列文章,为了让刚接触LLVM的人在最短的时间内快速的熟悉LLVM。这系列文章,现在经过将近一年的时间的使用,有了不少反馈的意见,现在将这些情况总结一下。 1. 在按照这个七天的学习计划进行的学习过程中,不少人出现了延误现象,主要体现在读文档的时候,读的过于仔细,然后感觉时间不够用。虽然在文档上花了很长时 间,但是到最后该用文档中的东西的时候,反而无从下手。出现这个问题,主要还是不会把握文档的重点,这个系列中列出来的文档,在日后接触LLVM的过程 中,需要不断的去读,反复的去读。不是读一遍就可以完全掌握的,在最开始读的时候首先要熟悉文档的主要结构,了解文档里都覆盖了哪些内容,然后在用的时候 可以知道在哪里能找到,这就达到了目的。 特别是针对刚毕业的学生,特别容易对文档抠的太仔细,全是新东西,花了很长时间看完了,回头发现什么也没记住。这就导致既花费了时间,又没有效果,不是在 公司实际工作中该出现的,在工作中学习东西就是为了更快的使用,不是为了考试,所以如果读完了没有收获,那么等于就是白读了。 2. 这个系列中第五天布置了一个练习,在第六天的时候给出了一个官方的例子。这个最初在刚开始的时候,是我每天一篇写出来,所以不存在什么问题。现在把整个系 列都发布了,有些让学习这个系列的人就延续了在学校时候的做法,如果有答案是完全不动脑子的