【AICon】AI 大模型超全落地场景&最佳实践 了解详情
写点什么

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

  • 2016-02-02
  • 本文字数:2468 字

    阅读完需:约 8 分钟

8 月 16 - 19 日,与零一万物李开复、蔚来李斌、面壁智能李大海,及工商银行、交通银行、华夏银行等 100+ 行业专家相聚 FCon x AICon

新闻

  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-02-02 18:004640
用户头像

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

关注

评论

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

白话说流——什么是流,从批认识流(二)

KAMI

大数据 flink 流计算

你不能不掌握的软技能——业务语言

KAMI

方法论 开发 沟通 软技能

互金总结系列(1)--开篇

互金从业者X

SpringMVC中Http请求方式转换(post转换为put/delete等方式)

知春秋

springmvc post post到put方式请求 post到delete方式请求

大中台模式下如何构建复杂业务核心状态机组件

古月木易

[架构师训练营] Week01 - 食堂就餐卡系统设计

谭方敏

学习

做产品少走弯路:上帝视角(2)

我是IT民工

产品 方法 路径 知识体系

由一次管理后台定时推送功能引发的对RabbitMQ延迟队列的思考(一)

LSJ

Java RabbitMQ 延迟队列

拙见/ 什么是自驱力?

ZoomQuiet大妈

自我提升 大妈 是也乎 IMHO 蟒营®

ARTS WEEK3

紫枫

ARTS 打卡计划

如何基于 OAM 编写一个扩展 Trait?

钱王骞

云原生 k8s OAM

大中台模式下如何构建复杂业务核心状态机组件

奈学教育

中台

《Golang工具go doc使用透析》

卓丁

godoc go doc 源码阅读 Go 语言

算法基础:排序算法看这一篇就够了

星际娱乐麻将胡了pg电子

排序算法

k8s 上运行我们的 springboot 服务之——自动化测试

柠檬

maven DevOps Unit Test

LeetCode 756. Pyramid Transition Matrix

liu_liu

LeetCode

Libra教程之:Libra协议的关键概念

程序那些事

区块链 libra blockchain 协议

游戏夜读 | 如何面对前景渺茫?

game1night

原创 | TDD工具集:JUnit、AssertJ和Mockito (二十一)编写测试-动态测试

编程道与术

Java 编程 TDD 单元测试 JUnit

如何用日记提升写作能力?

石云升

学习 方法 写作

架构师训练营第一周作业

Benjamin

公司治理的两个关键要素:存在的基石 + 成长的飞轮

霍太稳@极客邦科技

发展 公司管理 增长

食堂就餐卡系统架构设计文档

dony.zhang

[翻译]The Go Blog《Go maps in action》

卓丁

hashmap map 哈希表 Go 语言

小师妹学JavaIO之:NIO中那些奇怪的Buffer

程序那些事

io nio Java 25 周年 小师妹 buffer

读《你的灯还亮着吗》

liu_liu

读书感悟

Kafka零数据丢失的配置方案

奈学教育

kafka

Libra白皮书解读

程序那些事

区块链 facebook 数字货币 libra

JVM学习笔记——JVM类加载机制

王海

Java 面试 JVM

[转载]Go 和 Java的15个主要差异

卓丁

Java Go 语言

B端产品经理养成记(4):敏捷项目

涛哥 数字产品和业务架构

敏捷 产品经理

Android开发周报:Android相机开发、内存泄漏总结_移动_郭亮_InfoQ精选文章