新闻
教程
-
记一次 StackOverflow 崩溃分析: Proguard 5.3 错改指令
近期工作主要在细化项目的proguard混淆规则, 简单的去掉一些暴力keep, 可以减少项目1k+的方法数. 在删除某些配置之后, 尽管我知道对功能没有影响, 还是会去测一下功能是否正常. 于是就遇到了一个隐藏在主干上的StackOverflow崩溃。从堆栈上看, 匿名内部类的run调MyApp.startActivity, MyApp.startActivity又new了一个Runnable, 它的run继续调MyApp.startActivity, 最终栈溢出. 看了堆栈, 还以为是一个简单的问题, 直接去找到了代码.
-
Android MotionEvent 详解,之前用了两篇文章 事件分发机制原理 和 事件分发机制详解 来讲解事件分发,而作为事件分发主角之一的 MotionEvent 并没有过多的说明,本文就带大家了解 MotionEvent 的相关内容,简要介绍触摸事件,主要包括 单点触控、多点触控、鼠标事件 以及 getAction() 和 getActionMasked() 的区别。
Android 将所有的输入事件都放在了 MotionEvent 中,随着安卓的不断发展壮大,MotionEvent 也开始变得越来越复杂,
-
本文会主要讲解Android系统对于进程优先级的管理。优先级反应了系统对于进程重要性的判定。当系统剩余内存很低的时候,系统便会按照进程的优先级倒序杀死进程以回收内存。关于系统如何回收进程我们会在后面的文章中讲解,本文主要讲解系统对于进程优先级的判断依据和计算方法。在Processes and Threads (如果你还没有阅读,请立即阅读一下这篇文章)一文中,我们已经了解到,系统对于进程的优先级有如下五个分类:前台进程、可见进程、服务进程、后台进程、空进程,这只是一个粗略的划分。其实,在系统的内部实现中,优先级远不止这么五种。
-
在以往的Android系统上,所有Activity都是全屏的,如果不设置透明效果,一次只能看到一个Activity界面。但是从Android N(7.0)版本开始,系统支持了多窗口功能。在有了多窗口支持之后,用户可以同时打开和看到多个应用的界面。并且系统还支持在多个应用之间进行拖拽。在大屏幕设备上,这一功能非常实用。本文将详细讲解Android系统中多窗口功能的实现。
-
DataBinding 技术的出现,肯定是为了解决我们在开发中的一些痛点问题。所以,了解 DataBinding 要解决的问题,能够使我们更深刻地理解 DataBinding 技术的设计实现。从开发角度看,简言之,DataBinding 主要解决了两个问题:1.需要多次使用 findViewById,损害了应用性能且令人厌烦 2.更新UI数据需切换至UI线程,将数据分解映射到各个view比较麻烦,应该说,针对上述问题,都有第三方解决方案。第一个问题可以使用 Jake Wharton 的 ButterKnife;对于第二个问题,谷歌提供了 Loop-Handler 方案,你还可以使用 RxJava,EventBus 等方案,但它们只是解决了线程切换的问题,却没有解决将数据分解映射到各个view的问题,这正是 DataBinding 的魅力所在!
-
第一次在项目中要用到全屏功能的时候无从下手,然后就是去百度了。百度到的结果都是差不多的。不过直接把代码贴过来的确是可以用的。但是除了知道怎么做之外还想去理解它,因为只有理解了才能举一反三嘛。好在在后来的时候看到了官方的文档,写的非常详细。
-
Activity组件是用户唯一能看见的组件,作为软件所有功能的显示载体,其安全性不言而喻。针对Activity组件安全,作为一个安卓开发者来讲需要在日常开发过程中注意两点:1.Activity访问权限的控制 2.Activity被劫持,本篇文章将分享Activity访问权限控制方面的安全问题,首先科普下基础知识,Activity类型和使用方式决定了其风险和防御方式,故将Activity分类如下: Private、Public、Parter、In-house, Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。
-
Android客户端网络请求是每一个应用都不可或缺的模块,其设计的好坏直接影响应用的性能和代码稳定性、扩展性。Android网络请求最开始官方只提供了最基础的方法,开发者必须在此基础上进行二次封装,这样就要求开发者对Http请求协议、缓存、JSON转换、错误处理以及线程切换等都比较熟悉,稳定性、可扩展性和可维护性都是比较大的挑战。
-
SurfaceView 是 Android 中一种比较特殊的视图(View),它跟平时时候的 TextView、Button 最大的区别是它跟它的视图容器并不是在同一个视图层上,它的 UI 显示也可以不在一个独立的线程中完成,所以对 SurfaceView 的绘制并不会影响到主线程的运行。综合这些特点,SurfaceView 一般用来实现动态的或者比较复杂的图像还有动画的显示。
开源库 & App
-
一个简单的,方便的多屏适配的Android库
-
仿打字机效果
-
A raised button that lowers down to 0dp of elevation
-
FloatingView can make the target view floating above the anchor view with cool animation
-
SquareMenu is a custom Floating Action Button with a different shape from traditional FABs and with three sub menu buttons.
-
一个用 Kotlin 写的 Twitter 客户端
-
Yalantis 开源的一个很赞的搜索框过滤效果
-
Yet another Sketch Mirror App for Android.
-
一个管理安卓手机的应用,支持安卓7.0
-
又一个Mvp库,超级简单,但有足够的功能
-
一个功能强大的TextView,可以满足日常大部分布局方式,开发者可已自行组合属性配置出属于自己风格的样式
-
a DNS based ad blocker for Android.
-
可设置圆角背景边框的的按钮
工具
-
Mac 上轻量级 GIF 录屏小工具
-
Scouter is an open source APM and an open source profiler for java application like web applications on a tomcat .
活动
-
Google Developer Day China 2016
Google 开发者大会是一个互动交流的大会,旨在与开发者们和科技行业领先者们分享 Google 的最新科技和开放平台。今年,Google 开发者大会将于12月8日和12月14日分别在北京和上海举办。我们非常高兴与你分享创新科技,并且鼓励开发者们去建立下一个伟大的移动网络或本地应用。这不仅是创新科技的互联网时代,更是属于每一位开发者的时代。
设计
-
设计师都知道,设计不只是为了好看。设计也决定用户如何融入一个产品,无论是网站还是app。这是一种交谈。导航就是一种交谈。因为如果用户不明白使用方式,你的网站或app再漂亮都没用。
来自:http://www.androidweekly.cn/android-dev-weekly-issue-104/