- 博客(17)
- 收藏
- 关注
原创 receiver执行后台任务
一个场景:定时处理一些数据,这个过程需要较长时间,而且app未必会是前端进程。如何来实现这样的功能?默认情况下,手机放置一段时间后,是会熄屏,然后停止cpu的。执行后台任务时,需要唤醒cpu。唤醒cpu可以使用闹钟(alarm),本文不做具体介绍,本文考虑的是接收到广播之后的处理。Receiver接收广播的回调是在主线程中实现的,当广播所驱动的行为耗时的话,可能
2016-05-02 18:22:01
1168
原创 闹钟(Alarm)
刚接触android开发的时候,我是用定时器(Timer)来实现定时任务,产品发布后,部分用户反馈定时任务没有执行。很长一段时间之后,才意识到cpu休眠之后,timer也是不起作用的。执行定时任务要用到闹钟(Alarm)。引用stackoverflow的回答A Timer will start a thread that will keep track of w
2016-05-02 16:42:47
791
原创 Activity的启动模式
背景介绍:Android是通过Task来管理Activity的,同一个时间内是可能存在多个Task的,每个Task都有自己的栈(Back Stack)来存储Activity。这样的话,启动 MyActivity 时的行为是怎么样子的?若是 Background Task 已经有 MyActivity 时,会发生什么?若是 Current Task 已经有 MyActivity时,会发生什么
2016-04-29 00:32:28
302
原创 图片加载的基本方式
图片很耗内存,同时了也是极其重要的一个模块。各种各样的色彩,让app更加酷炫。主要涉及到的类BitmapFactoryBitmapFactory.Options加载图片的方式BitmapFactory的一系列decode函数。通常,不直接加载图片,而是获取图片的大致信息。比如高度,宽度,图片类型,然后根据实际情况,获取缩放后的图片(试想,
2016-04-28 20:49:32
448
原创 Bitmap的存储发展
Android 2.2 (API level 8)及之前的版本,垃圾回收(gc)时,app线程是暂停的,这会影响app的性能体验Android 2.3修改了这个问题,gc变为并行发生的。对于Bitmap来说,当没有被引用时,内存是被回收的。Android 2.3.3(API level 10)及之前版本,Bitmap的图像像素点是存放在native memory中的,J
2016-04-28 20:47:00
406
原创 mk文件释义
背景IT行业变化很快,需要长期学习新的知识,记忆力有限,有些知识点长期没用,多少有点遗忘,做点记录。 一个小项目的jni目录结构.├── Android.mk├── Application.mk├── kesyPrint.c├── kesyPrint.h├── rename.bat├── UninstalledObserver.c└── watc
2015-12-19 16:33:44
2181
原创 NDK和静态库
计算机领域有这静态库和动态链接库的概念windows系统动态链接库:windows编程里是 *.dll及其引入库静态库:*.lib类unix系统动态链接库:*.so静态库:*.a为什么要静态库?1. 模块化及代码复用2. 可执行文件在链接的过程中只会打包使用到的函数,这样可以减小包的大小。举个例子,有这
2015-12-19 15:01:35
725
原创 NDK C层代码崩溃定位
Pro Android C++ with NDK读书笔记 之 NDK层崩溃定位环境win7ADT版本Build: v22.6.2-1085508NDK版本 android-ndk-r9d-windows-x86genymotion模拟器获取崩溃堆栈编译时碰到个问题:APP_PLATFORM andro
2015-12-19 13:44:05
1029
原创 NDK下断点调试
NDK下断点调试Pro Android C++ with NDK读书笔记背景早期我在写Android C层的代码都是直接在subline Text中编写的,个人觉得eclipse对ndk层的支持并不那么美。老家伙了,又是个做事严谨的人,代码崩溃,直接查看logcat日志,看看代码基本都能知道哪里出错,并不需要借助ide来调试。当然,这个只限于个人开发者。团队开发是另一种情况,而且运
2015-12-18 22:02:31
641
原创 为什么需要ndk
既然谈到ndk,就顺便谈谈对C++的看法吧。关于语言之争一直存在。也有人用刀做对比,凸显出C++的复杂性。C++复杂?或许吧。我记得以前的一个总监提过,我们只是用C++的一部分。的确,我们常用的仅仅是C++的一个小小的子集,并不需要什么都掌握的,更何况,一个项目中能用到多少特性了。很久以前我在做pdf文档解析的时候,时间关
2015-12-18 21:58:19
1212
原创 crash反馈-----ACRA使用验证经历
ACRA是什么?ACRA是一个用来反馈崩溃日志的android库。崩溃日志发送到哪里?ACRA支持多种后台方式,也支持自己定制后台https://github.com/ACRA/acra/wiki/Backends我个人是使用email的方式怎么使用?官方介绍了网址https://github.co
2015-12-06 14:30:28
1544
原创 volley解惑
volley是什么?volley是2013年Google I/O大会上推出了一个新的网络通信框架,封装了http网络请求的通信细节,能够简单的进行http请求,简单地处理网络图片。如何使用?a. 生成Request对象b. 创建RequestQueuec. 将Request加入到RequestQueue中,网络请求完成后,会有调用Request对
2015-11-29 22:16:23
601
原创 greenDao---orm框架
想找个android上的数据库框架,一开始接触了XUtils,没什么文档,代码看着也别扭,不知从何下手,直接放弃,google搜索后,对比了下,选择了greenDao(为何?看着那牛逼的对比报表,以及官网简单易懂的使用介绍)。greenDao会为我们生成一些必要的类,这要求创建一个独立的java工程,定义好表格格式,运行java工程,生成相应的类
2015-11-23 21:06:37
888
原创 Relinker解惑
Relink是什么?Relink是一个加载Android so文件(shared library)的一个库。为什么要使用Relink库?载入so库的传统做法是使用System.loadLibrary(library);但是有时会出现UnsatisfiedLinkError,Relink库能大幅减小报错的概率出现Un
2015-11-20 18:57:23
6562
原创 Android使用特殊权限的一种代码实现
android编程中有时候需要用到一些特殊的权限,这些权限正常情况下是不对普通的第三方app开发商开放的。举个例子 WRITE_SECURE_SETTINGS,android sdk文档是这么解释的public static final String WRITE_SECURE_SETTINGS Added in API level 3Allows an application to
2015-11-19 15:04:47
1171
原创 使用AsyncTask的常见问题及解决方式
Configuration Changes(旋转屏幕是其中一种)时,会销毁并重建Activity,使用AsyncTask常出现的问题有,AsyncTask还在运行,但是屏幕一旋转,Activity销毁并重建,这样的话很可能导致崩溃。解决方式一. 使用worker fragment老外有篇博文介绍了这个的实现,我把它称为worker fragment将As
2015-11-19 14:05:20
1115
原创 AsyncTask解惑
AsyncTask作为执行后台操作常见的一种实现方式,还是有必要阅读下源码,了解其实现机制的。这里是使用Android4.4的源码使用AsyncTask的规则(这几点sdk文档都有说明)1. AsyncTask的类必须在UI线程加载(从4.1开始系统会帮我们自动完成)2. AsyncTask对象必须在UI线程创建3. execute方法必须在UI线程调用4. 不
2015-11-19 13:16:49
388
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人