开发

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。然而,它通常是第一个迹象

C 语言关键字,标示符和注释

空扰寡人 提交于 2019-12-05 12:34:02
一、关键字 C语言提供的有特殊含义的符号,共32个。 在Xcode中关键字全部高亮显示,关键字全部都为小写。如return、int等。 二、标识符 定义:标识符是程序员在程序中自定义的一些符号和名称。关键字是系统自带的,标识符是自定义的。如函数的名称等,用来区分各种事务。 标识符有一定的命名规则: 只能由26个小写字母,0-9的数字以及下划线组成。 严格区分大小写。 不能以数字开头。 不可以使用关键字作为标识符。 建议遵守命名规范: (1)尽量起有意义的名字; (2)多个单词可以使用驼峰标识(第二个字母的首字母大写)或者使用下划线连接。 三、注释 (1)注释用以解释代码的含义,提高程序的可读性,注释掉的内容将不会参与编译。注释是写给程序员看的,方便同事之间的交流。 (2)注释的符号 单行注释 // 多行注释 /* */ (3)可以使用注释检查代码的作用(前后对照),可以使用注释排错(因为编译器报错有时并不准确,且一个错误往往引发多个错误) (4)注释的嵌套 ①. 单行注释可以嵌套单行注释,多行注释 ②. 多行注释可以嵌套单行注释 ③. 多行注释不可以嵌套多行注释 (5)注意printf(“//abc”);这里的//在双引号内是字符串的一部分而非注释。 来源: oschina 链接: https://my.oschina.net/u/2450698/blog/547037

Hyperic 开发环境的建立

那年仲夏 提交于 2019-12-05 12:03:37
开源软件 Hyperic 应用管理工具的开发采用了Git, mvn, ant, java, groovy, postgresql, tomcat, mq等多种技术,虽然大部分定制不需要从源代码开始,但是其代码质量的确是 高 ,研究其架构和架构,感觉自身水平有很大提高。 如果您不想费劲从源代码开始,那就直接猛击 该链接 免费下载中文版 首先需要安装git。这里就不细表了。我感觉 git是有史以来最强大的协同版本管理工具,天才之作,没有你做不到的,只有你想不到的。 然后是到github.com上开个账号,这个也不细说了,对github不熟悉的用户,需要好好研究一下这个网站。 从 https://github.com/hyperic/hq 下载源代码,或者使用 git clone https://github.com/hyperic/hq 准备好 JDK 7, maven 2.2.1, ant 1.7.1 设置环境变量 JAVA_HOME=/path/to/your/jdk ANT_HOME=/path/to/ant-1.7.x TOMCAT_HOME=/path/to/tomcat-6.0.26 M2_HOME=/path/to/apache-maven-2.2.1 MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=512m" ANT_OPTS="

Swift 中的 Runtime

夙愿已清 提交于 2019-12-05 03:59:44
即使在 Swift APP 中没有一行 Object-c 的代码,每个 APP 也都会在 Object-c runtime 中运行,为动态任务分发和运行时对象关联开启了一个世界。更确切地说,可能在仅使用 Swift 库的时候只运行 Swift runtime。但是使用 Objective-C runtime 这么长时间,我们也应该让他充分发挥其作用。 下面我们将以 Swift 的视角来观察关联对象(associated objects])和方法交叉(method swizzling) 这两个在运行时的技术。 ####关联对象(Associated Objects) Swift extension 可以给已经存在 Cocoa 类添加极为丰富的功能,具体有: (1)添加计算实例属性 ( computed property) 和计算类属性 (2)定义实例方法和类方法 (3)提供新的构造器 (4)定义下标(subscript) (5)定义和使用新的嵌套类型 (6)使一个遵守某个接口 相比之下, Objective-C 的 category 就逊色多了。比如说 Objective-C 中的 extension 就无法向既有类添加属性。 庆幸的是 Objective-C 的 关联对象(Associated Objects) 可以改善这个缺憾。例如要向一个工程里所有的 view

开源 Android pdf 阅读器开发总结

女生的网名这么多〃 提交于 2019-12-05 00:19:51
前段时间项目涉及到 pdf 阅读,因此我开始找了些源码阅读比较,现在贴出各实现方案的对比。希望对大家有帮助。方便大家的阅读,我将自己认为最好的排在最前。 Vudroid Google code : http://code.google.com/p/vudroid/ 这是一款可以阅读 pdf 和 djvu 格式文本的阅读器。按道理说我使用这个给自己带来一定的麻烦,因为我自己需要剥离 pdf 部分,因为作者底层用的 ndk 开发,我还得重新编译 so 库。但是,在我找到的所有源代码中,此作品是最顺畅的,我不能割舍。如果大家想要快速使用而不想剥离 pdf 部分,可以使用我的 google code : http://code-ernest.googlecode.com/svn/trunk/DocumentViewer droidReader Google code: http://code.google.com/p/droidreader/ 其采用 native library 和 Vudroid 一样: MuPDF 但是它的缺点是,实现上比 Vudroid 少了那么点顺畅性,在 zoom 这一点上要输 Vudroid ,其他方面都很棒。 apv Google code : http://code.google.com/p/apv/ 其采用 native library 和

开源框架Openbiz给PHP开发人员带来新生机

独自空忆成欢 提交于 2019-12-04 19:10:41
面向读者范围: 软件行业经理 及 创业者 笔者自述 我从事软件开发行业至今已经将近十二年,经历了从 Windows 3.2 第一次登陆中国 到苹果 安卓统一移动应用市场的一场场变革。这场商战中,把握住未来发展的方向才是确保再竞争中生存的硬道理。由此发起本文。 引文 多年来一直在探寻企业级应用的未来发展方向,发现对于技术的积累与重用是这个行业的提高竞争力的重要因素之一。 (当然这并不只是成功的唯一条件)让我以技术的重用性为视角来看一下这个行业的发展兴衰。 很多小型软件开发团队在创业初期,往往承接外包软件开发工作为主要业务来源,在面对市场竞争时, 大部分人不断将客户需求中的共性积累起来,设法将带有共性的业务逻辑分立出来用于在其它项目中重用,这样可以逐渐降低未来的开发人力成本,听起来是个不错的逻辑,但在实际应用中却很少真的见到效果。 是什么导致这个美好的设想实施困难呢? • 客户的需求过于制定化, • 系统在设计过程中被多次彻底修改(而非所期待的“扩展”) • 客户对时间要求的紧迫,对费用预算的苛刻,让你无法停下来去思考架构,只能一个功能一个功能的修改完整个项目 这种外包开发的商业模式,遇到的最常见的尖锐问题是什么呢? • 客户的费用承受能力,他会不断的拿给你的开发费和某国际 500 强企业的成熟产品的零售价格去比较 • 客户的对周边业务逻辑的不认可

iOS开发14:UITableView与UITableViewCell

可紊 提交于 2019-12-04 15:53:44
UITableView用来以表格的形式显示数据。关于UITableView,我们应该注意: (1)UITableView用来显示表格的可见部分,UITableViewCell用来显示表格的一行。 (2)UITableView并不负责存储表格中的数据,而是仅仅存储足够的数据使得可以画出当前可见部分。 (3)UITableView从UITableViewDelegate协议获取配置信息,从UITableViewDataSource协议获得数据信息。 (4)所有的UITableView实现时实际上只有一列,但是我们可以通过向UITableViewCell中添加子视图,使得它看起来有好几列。 (5)UITableView有两种风格: ① Grouped:每一组看起来像是圆矩形; ② Plain:这是默认风格,可以修改成Indexed风格。 在下边的小例子中,我们将先实现显示一列数据,然后在每行添加图像,之后再看看UITableViewCell的四种分别是什么样的。最后再进行其他操作,比如设置缩进、修改字体大小和行高等。 1、运行Xcode 4.2,新建一个Single View Application,名称为Table Sample: 2、单击ViewController.xib,使用Interface Builder给视图添加一个UITableView控件,并使其覆盖整个视图: 3

解决开发环境与部属环境差异性的一种实践

拈花ヽ惹草 提交于 2019-12-04 07:24:31
做spring web的同学可能都会遇到开发环境与部属环境不一致的情况,比如说数据库的用户名与密码,单点登录服务器的域名,等等,要是每回开发完成需要部署时都再去改一遍配置文件岂不是非常麻烦。 于是,我在我得一个项目中实践了一种能够在部署时无需修改配置文件的方法,他的关键就是使用spring的 <util:properties> : <context:property-placeholder properties-ref="app"/> <!-- spring的<util:properties>有这样两点特性: 1.默认情况下spring会用外部properties文件中的properties替换掉“local”的properties(也就是使用<prop>配置的properties) 2.配置了“ignore-resource-not-found=true”就会忽略找不到的properties文件 利用这两点特性,将开发级的环境写在外部properties文件中,并设置成“ignore-resource-not-found=true”,同时将生产级的环境写在<prop>中,这样,当部署后因为忽略了找不到的外部properties文件,所以自然就使用了<prop>中定义的properties; 同时,在开发环境中,因为能够找到外部的properties文件,所以外部配置(开发级配置

iOS开发调试和问题解决策略

故事扮演 提交于 2019-12-03 16:44:23
iOS开发调试和问题解决策略 经常会听到有人抛出一些很信息很不全的问题,比如界面显示不正确、后端网络请求不通之类的问题,然后开始瞎猜。 我觉得很有必要分享一下解决问题的范式,因为靠猜的话,十猜九不准。 不要瞎猜,要简单粗暴地解决问题 “不要瞎猜”是解决问题的首要原则,只有不瞎猜,寻找确切的根据,才能精准和快速地解决问题。 其实解决问题基本上是简单粗暴的:收集信息,然后根据信息进行调整,然后继续收集信息...直到问题解决。 收集信息是不可或缺的一个步骤,而它的关键问题就是:收集什么信息才是有价值的?如何收集这些信息? 根据要解决的问题不同,收集的信息类型和方式也会不同。 基本和通用的手段:日志(Log) 日志基本上是各类问题的最基本和最通用的收集信息方式,放在别的问题领域同样适用。 记得以前折腾Linux的时候,不去认真检查日志,真的是想不到问题是出现在哪里。 在iOS开发中呢,NSLog应该是人人都在用了。 然而你也会发现,单纯的NSLog用多了,也会有些问题,比如总是输出一大堆无用的信息,除非你在解决完这个问题或解决别的问题时先把无关的NSLog注释掉。 这种时候,日志框架就派上用场了,它们能帮你控制日志的级别、分类和对应的存放位置,有的还提供了工具帮你检索它。 可以关注 CocoaLumberjack 和 NSLogger ,或者是这个列表: https://github

谈谈MVC与微信

拜拜、爱过 提交于 2019-12-02 14:50:46
最近被问到一个问题,"用mvc谈谈微信的架构设计",下面是我的总结 1、对MVC的理解 mvc指的是模型(M—Module),视图(View),控制器(Control)。一般情况下,M指一个项目的存储结构,存储数据模型以及业务业务数据模型,V指的是用户与系统的交互接口,也叫做表现层,这里对用户体验考虑较多,C代表用户从视图接口接入的真正功能,掌管业务功能的变现,也叫逻辑层,三个层次间用接口定义交互边界,用工厂产生具体的实现,可以有效地减少耦合,提高迭代效率和开发效率等。 2、从MVC视角看微信 用mvc的视角看待微信这个项目,可以用mvc对微信做一个大概的分级,其中可以将微信客户端整个看成一个v层,微信服务器由M,C结合。 3、从MVC视角浅谈微信 考虑到微信客户端变更成本过高的问题,将逻辑重心放到服务器,即服务器处理数据的流入流出和对客户端提供接口,客户端主要负责展示效果。服务器在不能有效优化的阶段前提下,可以将不是服务器必要的具体实现逻辑交由客户端实现,避免服务器增加重复判断(例如:服务器对android、ios、wp客户端的各种消息统一协议,具体消息的处理交由客户端识别处理)。客户端可以使用混合编程,即一部分使用java原生代码,一部分通过webview的衍生使用网页展现,可以减少客户端的开发实现和更新成本,忽略必要的质量监控逻辑和容灾逻辑以及必要的版本区分逻辑