写点什么

Android 开发周报:Android 相机开发、内存泄漏总结

2016 年 2 月 02 日

新闻

  1. 《在 Google 看来应用商店都将消亡,而搜索永存》:智能手机用户每天都要和各种各样的 App 打交道,当然每天也要下载一定数量的 App。而目前来说,要下载 App,iOS 用户需要去 App Store,而 Android 用户则需要使用 Google Play 或是国内的应用商店。这似乎已经成为了理所当然的一件事。然而,根据国外媒体的报道,Google 目前正在测试一种新的下载 App 的方法,在未来,Android 用户也许不用再使用 Google Play 就可以直接下载 App 了。
  2. 《每 20 部 Android 手机就有 1 部被 root》:国外的研究人员研究结果表明:仅有 10% 的 Android 设备拥有预装“输入密码”设备加密的功能,这种情况会导致许多手机丢失或被偷之后陷入数据泄露的威胁境地。另外,每 3 部 Android 智能手机就有 1 部没有使用“输入密码”锁屏功能,这就让攻击者更容易访问设备了。而在 iPhone 中,仅有 5% 的用户没有启用这项功能。让情况变得更加糟糕的是,每 20 部 Android 手机中就有 1 部被 root,而 iPhone 的越狱比例只有 0.4%。

教程

  1. 《Android 相机开发那些坑》:Android 系统提供了两种使用手机相机资源实现拍摄功能的方法,一种是直接通过 Intent 调用系统相机组件,这种方法快速方便,适用于直接获得照片的场景,如上传相册,微博、朋友圈发照片等。另一种是使用相机 API 来定制自定义相机,这种方法适用于需要定制相机界面或者开发特殊相机功能的场景,如需要对照片做裁剪、滤镜处理,添加贴纸,表情,地点标签等。这篇文章总结了 Android 相机开发的相关知识、流程,以及容易遇到的坑,希望能帮助今后可能会接触 Android 相机开发的朋友快速上手,节省时间,少走弯路。
  2. 《Android Studio2.0 预览版之 Android 模拟器》:新 Android 模拟器的早期预览版现在可以试用了。作为 Android Studio 2.0 的一部分,除了用于测试的物理 Android 硬件外,最新版本的 Android 模拟器可帮助你针对各种屏幕尺寸和配置测试你的应用。此外,使用官方版 Android 模拟器可以让你使用最新版本的 Android 进行测试。在此基础上,新 Android 模拟器的两大优势包括:速度和性能、易用性和强大的用户界面。
  3. 《指定 App 是否位于前台判断》:有时候我们需要通过判断 App 是否运行在前台而进行一些 UI 处理。本文提供一个判断 App 是否处于前台的工具类, 拥有多达 5 种判断方法, 最后一种方法堪称 Android 黑科技, 既可以突破 Android5.0 以上的权限封锁, 获取任意前台 App 的包名, 又不需要权限。
  4. 《Android 内存泄漏总结》:内存管理的目的就是让我们在开发中怎么有效的避免应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个或某些实例所持有却不再被使用导致 GC 不能回收。作者从 Java 内存泄漏的基础知识开始,并通过具体例子说明了 Android 引起内存泄漏的各种原因,以及如何利用工具分析了应用内存泄漏。
  5. 《Android 应用安全开发之源码安全》:Android Apk 很容易通过逆向工程进行反编译,从而是其代码完全暴露给攻击者,使 Apk 面临破解,软件逻辑修改,插入恶意代码,替换广告商 ID 等风险。本文从混淆保护、二次打包防护、SO 保护、资源文件保护、反调试技术、应用加固技术几方面介绍了如何保护 Apk。文中提到的技术非常实用,推荐大家大胆实践。
  6. 《Android 子线程真的不能更新 UI 吗?》:当一个程序第一次启动的时候,Android 会同时启动一个对应的主线程,这个主线程就是 UI 线程,也就是 ActivityThread。UI 线程主要负责处理与 UI 相关的事件,如用户的按键点击、用户触摸屏幕以及屏幕绘图等。系统不会为每个组件单独创建一个线程,在同一个进程里的 UI 组件都会在 UI 线程里实例化,系统对每一个组件的调用都从 UI 线程分发出去。所以,响应系统回调的方法永远都是在 UI 线程里运行。那么子线程真的不能更新 UI 吗?阅读文章,看看作者是如何回答该问题的。
  7. 《APK 瘦身实践》:Apk 瘦身应该是每一位 Android 工程师都会进行的一项工作。比如会开启 minifyEnabled、开启 shrinkResources、去除不相关的大型库、去除没有使用到的图片和代码。但即使这样,往往不能达到老板们的要求,所以我们需要进行深度的瘦身。本文介绍了几种减小 Apk 大小的技巧,相信对大家会有所帮助。
  8. 《Android M Launcher3 主流程源码浅析》:有些人可能觉得 Launcher 很高端,其实 Launcher 的实质也就是一个普通应用,它只是比普通应用多配置了 Category 的 android:name=“android.intent.category.HOME”属性而已。当 Android 开机启动成功以后框架层会尝试启动包含上面属性配置的 Activity,这样被启动的那个 Activity 就成了桌面。当我们按下设备的 Home 键时也会触发包含该属性的 Activity。只不过当系统中只存在一个包含该属性的应用时,无论开机还是 Home 键触发都只会自动启动默认的;当存在多个时无论哪种触发都会弹出选择框进行选择设置。本文是一篇介绍 Launcher3 源码的文章,简单的介绍了 Launcher3 的加载流程。

开源项目

  1. uCrop :uCrop 是一款漂亮又实用的图片裁剪库。
  2. SmoothCheckBox :这是一个自定义的 CheckBox,提供了动画支持,并且颜色、边框都可以配置,集成也很方便。SmoothCheckBox 比系统自带的 CheckBox 漂亮很多。
  3. blockcanary :BlockCanary 是一个 Android 平台的一个非侵入式的性能监控组件,应用只需要实现一个抽象类,提供一些该组件需要的上下文环境,就可以在平时使用应用的时候检测主线程上的各种卡慢问题,并通过组件提供的各种信息分析出原因并进行修复。
  4. SwipeStack :SwipeStack 实现了卡片堆积效果,支持手势滑动移除功能,效果很赞。

工具

  1. Androl4b :专为安卓测试、安全研究准备的一个虚拟机系统,里面集成了一系列 Android 应用程序评估测试所需的工具,可用于逆向工程和恶意软件分析。

感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者(已满),InfoQ 读者交流群(#2)InfoQ 好读者)。

2016 年 2 月 02 日 18:004146
用户头像

发布了 121 篇内容, 共 34.7 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

计算机网络基础(十)---网络层-迪杰斯特拉算法

书旅

算法 计算机网络 网络 最短路径

到底一台服务器能够支持多少TCP并发连接?

南方有乔木兮

池化技术到达有多牛?看了线程和线程池的对比吓我一跳!

王磊

Java

QQ音乐PB级ClickHouse实时数据平台架构演进之路

小小的一朵云

大数据

蚂蚁上市:P7可获1200万元期权,酸酸酸酸酸...

程序员生活志

互联网热点 蚂蚁金服

第八周作业

田振宇

一个小实验,来

池建强

算法 薪资

什么样的信任才值得拥有?谈一谈极客邦的5K1S文档

泰稳@极客邦科技

Django框架,Flask框架和Tornado框架各有什么优缺点

古月木易

django flask tornado

顺势昌,逆势亡:人啊,得学会做信天翁,而不是鹧鸪鸟

非著名程序员

创业 程序员 管理 提升认知

week08 总结

Z冰红茶

NameNode和SecondaryNameNode工作机制

奈学教育

NameNode

当远程工作成为未来的工作方式......

Atlassian速递

Atlassian Jira

将Arch Linux安装到U盘

Kurtis Moxley

Linux 安装操作系统

如何设计一个亿级消息量的IM系统

Chank

Java Architecture Architect IM Instant Messaging

国家版权局发布《关于规范摄影作品版权秩序的通知》

CECBC区块链专委会

电子存证 作品版权 侵权盗版 剑网2019

Flink 1.11 SQL 使用攻略

Apache Flink

flink

Django框架,Flask框架和Tornado框架各有什么优缺点

奈学教育

django flask tornado

NameNode和SecondaryNameNode工作机制

古月木易

NameNode econdaryNameNode

大厂经验(4):iOS端埋点自动采集技术原理剖析

DeeperMan

ios 前端 数据采集 埋点

真香!Linux 原来是这么管理内存的

cxuan

Linux 操作系统

LeetCode题解:142. 环形链表 II,JavaScript,快慢指针,详细注释

Lee Chen

LeetCode 前端进阶训练营

央行数字货币或将成为经济“内循环”的未来加速器

CECBC区块链专委会

数字经济 全球经济下行 降息 惠普金融深化

实战:docker搭建FastDFS文件系统并集成SpringBoot

生命在于折腾

springboot

秒杀全网!研发、运营必备实用工具网站

程序员生活志

工具类网站

企业为何需要建立统一的复用型软件平台?

力软.net/java开发平台

Java 企业信息化 开发工具 框架 平台应用服务

乘商用之风,破后疫情之浪:丁耘分享华为如何持续护航5G新价值

脑极体

4. JSON字符串是如何被解析的?JsonParser了解一下

YourBatman

Jackson JSON库

原创 | 使用JPA全面实现DDD持久化【关于本书】

编程道与术

Java hibernate DDD JDBC jpa

腾讯“神盾-联邦计算”平台带你翻越数据合作的重重大山

小小的一朵云

大数据

如何成为一个成功的首席数据官

尹千觞

微服务架构下如何保证事务的一致性

微服务架构下如何保证事务的一致性

Android开发周报:Android相机开发、内存泄漏总结-InfoQ