Android
文章平均质量分 78
aspook
公众号「像未来一样」
展开
-
Flutter技术概览
前几天Google宣布发布Flutter第一个beta版本,Flutter是一个全新的(其实Flutter很早就有了,前身叫Sky)移动UI框架,用来帮助开发者在iOS和Android平台上开发高质量的原生应用。Flutter是跨平台的免费开源UI框架,iOS和Android可以共用一套代码。Flutter官网地址为https://flutter.io/。Flutter的主要优点如下:...原创 2018-03-04 11:15:51 · 23354 阅读 · 0 评论 -
关于WebView的一些用法探讨
众所周知,WebView是Android的一个重要视图组件,它基于WebKit内核,相当于一个内置浏览器,因此它主要的功能就是显示网页。其实WebView的功能非常强大,随着Web前端技术和Html5的发展,越来越多的APP不再是单纯的native开发,而是结合了Web方式,更有的甚至完全是Web APP的方式,当然其性能问题那就另讲了。相信每个开发者都或多或少地用过WebView,因此这里不再探原创 2015-02-03 16:21:09 · 1531 阅读 · 0 评论 -
PinnedSectionListView的实现原理
最近使用新浪体育客户端看NBA新闻,发现其比赛界面也采用了磁铁效果,即上下滑动ListView时,当前时间条会吸附在界面的顶部,具体效果如下图:其实Android手机自带的联系人界面(至少Nexus 4是)也实现了这种效果,滑动联系人列表时,会把当前联系人分组首字母固定在顶端。这种效果的确很酷,如果你问这么酷的效果是否很难实现呢?请记住在我们尚未成为最前沿拓荒者的时候,总有人会在我原创 2015-02-02 13:20:10 · 3631 阅读 · 2 评论 -
Android平台好友点击微信分享的内容后跳转来源App的实现方案研究
很多时候我们的应用在使用微信分享内容之后,希望其他用户点击该分享内容能够跳转到我们的App,以实现闭环,这样的分享才是最有价值的。这种需求涉及到不同应用之间的交互,虽然微信提供了分享SDK,但仍然有不少限制,现在总结两种在Android平台上初步认为可行的方案:1.分享网页,从分享的网页跳转回原App。2.分享WXAppExtendObject类型的数据,且只能分享给好友,好友从聊天列表点原创 2014-09-03 18:03:51 · 11976 阅读 · 5 评论 -
Android微信支付彻底扫坑
由于公司运营需要,Android客户端要增加微信支付。在看了几遍官方文档之后,加上之前有集成微信分享的经验,所以很快就把调用微信支付的代码写好了,待微信支付相关接口完成后联调时,才发现山高路远坑深啊!从下午2点半开始调试,一直折腾到快6点,那个微信支付界面才“千呼万唤始出来”,更坑爹的是,压根儿就不是我客户端的问题,而是后台接口那边sign生成时出了问题。在解决问题的过程中,看到网上太多关于微信支...原创 2015-12-04 13:31:13 · 24901 阅读 · 76 评论 -
巧用AsyncTask的onProgressUpdate回调
AsyncTask简介AsyncTask相信大家已经特别熟悉了,它是Android提供的一个轻量级的异步处理类。它简单易用,可以很容易地执行后台任务,也可以很方便地将后台任务执行的进度与结果发送到UI线程。爱与恨由于Android的单线程模型,异步处理在Android开发中显得尤为重要,因此线程中的交互不可避免。假如我们利用Android消息机制自己实现这个过程,则较为复杂且有着发生各种各样错误的风原创 2016-04-05 14:20:43 · 6426 阅读 · 0 评论 -
根据你的目的和意图来选择按钮样式
根据你的目的和意图来选择按钮样式当一个app做得非常漂亮时,用户可能不会在意,但是他们往往会注意到app中做得糟糕的地方,因此app中每个布局都要选择使用正确的组件来实现,基于以上原因,这一点显得特别重要。对于按钮来说,也是很困难的,标准的Button通常有3种形式:扁平化、凸起、浮动式。选择什么样的Button样式取决于你想让该按钮有多突出。等等,什么?一个按钮如何才能突出显示?当提到“突出”这个翻译 2016-03-11 17:40:35 · 1650 阅读 · 0 评论 -
Win7上React Native Android开发环境搭建
最近有时间来学习React Native,首先从搭建开发环境开始。由于没有Mac,只好在Windows上搭建开发环境,官方文档说Facebook的工程师并未特意针对Windows平台做兼容,看来即便不做iOS也还是有必要搞一台Mac了。主要参考资料React Native官网React Native中文网如果英文好的话可以直接去看官网,喜欢看中文的可以看上面的中文站,翻译比较准确,内容也比较新原创 2016-01-27 19:58:54 · 1899 阅读 · 0 评论 -
利用Android属性动画实现Banner控件
之前在一篇博客中描述了实现原理,具体请移步到利用Android属性动画实现Banner的原理与实践。源代码已经推到GitHub上,请移步到Android-AnimationBanner。AnimationBanner特点:1.实现原理及使用都很简单2.可灵活设置Banner数量,1张或N张3.附带Indicator小圆点指示器,并自动联动4.可灵活设置Indicator指示原创 2015-12-03 12:43:32 · 2468 阅读 · 0 评论 -
Android构建过程简述
Android的构建过程涉及到许多工具和流程,并会产生一系列中间件,最终生成一个APK文件,可以根据官方提供的流程图来具体了解构建的过程。通常的构建过程就是如上图所示,下面是具体描述:1.AAPT(Android Asset Packaging Tool)工具会打包应用中的资源文件,如AndroidManifest.xml、layout布局中的xml等,并将xml文件编译为二进原创 2015-10-28 15:19:15 · 1070 阅读 · 0 评论 -
Android生成keystore
Android应用程序在发布时需要使用一个证书对应用进行数字签名,该证书的私钥由开发人员所有。这样做可以防止第三方或恶意软件替换我们的应用,因为相同包名如果签名不同,则不可以覆盖安装,同样当我们的App升级时也会检验,只有签名相同才会正常升级。签名的另一个作用是允许代码和数据共享,Android有一个一个基于签名的Permission标签:其中protectionLevel有4种值:nor原创 2014-05-22 14:20:29 · 1154 阅读 · 0 评论 -
内嵌式WebView中锚链接失效的解决方案
现在Hybrid App越来越多,因此WebView的使用率变得越来越高,这篇文章探讨一下网页中锚链接效果的问题。一、锚的基本概念和用法熟悉HTML网页的朋友对命名锚(named anchors)应该十分了解,它的实现也很简单,可以按如下语法定义一个锚:目标位置要跳转该锚的话只需要定义一个指向该锚的链接即可,如:点击跳转到锚点的位置二、问题的由来鉴于锚在网页中的实现非常原创 2015-10-22 15:13:34 · 5885 阅读 · 0 评论 -
关于Android的.so文件你所需要知道的
@author ASCE1885的 Github 简书 微博 CSDN原文链接早期的Android系统几乎只支持ARMv5的CPU架构,你知道现在它支持多少种吗?7种!Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年转载 2015-08-21 10:49:19 · 1195 阅读 · 0 评论 -
探索新的Android权限模式
在Android M中,用户和开发者处理权限的方法将要发生改变,下面就来看一下它们是如何变化的以及这些变化是如何影响用户体验的,最后探讨需要做些什么来实现新的权限模式。继2015年Google I/O大会发布新的Android版本以来,我们已经见到了全新的Android设计支持库。另外一个重要的事情就是Android M中新的权限机制,它也会影响到在M之前的版本中的运行方式。在ribot,我们翻译 2015-09-01 12:58:05 · 3874 阅读 · 1 评论 -
Kotlin:Android世界的Swift
Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模板。它与Java高度可互操作,可以同时用在一个项目中。按照JetBrains的说法,根据他们多年的Java平台开发经验,他们认为Java编程语言有一定的局限性和问题,而且由于需要向后兼容,转载 2015-07-24 09:26:27 · 1036 阅读 · 0 评论 -
Android文件存储
Android文件系统跟其他平台基于磁盘的文件系统类似,这篇教程描述了如何使用文件相关的API在Android文件系统上进行读写操作。File对象适合读写大量的流式数据,如图片文件或其他文件的网络传输。这篇教程将演示如何在App中执行基本的文件操作,并假设读者对Linux文件系统和Java标准的文件输入输出有一定基础。选择内部存储还是外部存储所有的Android设备都将文件存储区域翻译 2015-08-14 11:42:03 · 3844 阅读 · 0 评论 -
Android应用程序的生命周期
大家都知道,Android可以同时运行多个应用并且支持互相之间的切换,这是因为Android是基于Linux的多用户、多任务的操作系统,Android应用的启动与执行同样也是基于Linux进程的。Linux进程Linux为每个用户分配一个唯一的UserId,并通过沙盒机制来隔离每个用户,每个用户通过权限控制只能访问属于自己的资源(root用户除外)。在Android中,每个App相当于一个用户,因此原创 2016-01-22 13:33:31 · 3319 阅读 · 0 评论 -
Activity四种LaunchMode详解
大家都知道Activity有四种LaunchMode,分别是standard、singleTop、singleTask、singleInstance。通过打Log的方式测试,我们可以知道每一种LaunchMode的情况下,Activity是否会重新创建实例,是否会重新创建Task,网上也有很多帖子作了很详细的解释,因此这里不再详细地测试每一种LaunchMode下具体情况,只是做一个总结,方便自己原创 2014-08-27 22:38:52 · 1104 阅读 · 0 评论 -
非微信内置浏览器中的网页调起微信支付的方案研究
问题来源之前在app中集成过微信支付,当时还写了一篇扫坑贴,此种微信支付方式为app支付,即在我们自己的应用中嵌入微信支付SDK,由Native代码调起微信支付。后来由于业务需要在我们app的WebView中打开第三方店铺的网页,在第三方网页中有微信支付按钮,测试反馈说ios可以调起微信支付,而android不可以。后来网上看到说微信内置Webview和京东的网页也可以调起微信支付,微信自己没什么奇原创 2016-05-04 20:21:23 · 44099 阅读 · 8 评论 -
Java类加载器及Android类加载器基础
引子Android插件化与热更新技术日渐成熟,当你研究这些技术时会发现类加载器在其中占据重要地位。Java语言天生就有灵活性、动态性,支持运行期间动态组装程序,而这一切的基础就是类加载器。Java中的类加载器Java灵活性和动态性的原因Java源代码被编译器编译成字节码,即从.java文件编译为.class文件,而.class文件就是通过类加载器加载到虚拟机内存中的。虚拟机的类加载(Class Lo原创 2017-03-07 11:29:24 · 2830 阅读 · 1 评论 -
Android应用快捷方式
有的App会给用户提供快捷方式,8.0之前我们多是通过发送com.android.launcher.action.INSTALL_SHORTCUT 广播的方式来实现。但在8.0的系统行为变更中指出,该广播变为私有的隐式广播,因此原来创建快捷方式的方法在8.0的系统上将不再有效,官方推荐我们使用ShortcutManager来创建应用快捷方式。快捷方式应用场景及类型快捷方式应用场景Android 7.原创 2017-09-06 17:18:55 · 3971 阅读 · 2 评论 -
Android全面屏适配
什么是全面屏概念很多人可能把全面屏跟曲面屏混淆,其实这是两个不同的概念。一般手机的屏幕纵横比为16:9,如1080x1920、1440x2560等,其比值为1.777777……,全面屏手机出现之前,Android中默认的最大屏幕纵横比(maximum aspect ratio)为1.86,即能够兼容16:9的屏幕。一些手机厂商为了追求更大的屏幕空间以及更极致的用户体验,于是提高了屏幕纵横比,17:9原创 2017-08-08 15:06:24 · 25525 阅读 · 7 评论 -
Android性能优化典范-第3季
Android性能优化典范的课程最近更新到第三季了,这次一共12个短视频课程,包括的内容大致有:更高效的ArrayMap容器,使用Android系统提供的特殊容器来避免自动装箱,避免使用枚举类型,注意onLowMemory与onTrimMemory的回调,避免内存泄漏,高效的位置更新操作,重复layout操作的性能影响,以及使用Batching,Prefetching优化网络请求,压缩传输数据等等转载 2015-08-19 17:51:03 · 992 阅读 · 0 评论 -
activity-alias详解及应用
activity-alias标签元素众所周知,AndroidManifest是一个xml文件,它包含很多标签元素,如application、activity、receiver等,其中有一个叫做activity-alias,因为该标签平时很少用到,可能大家对这个标签还不是很熟悉。activity-alias,顾名思义,即activity的别名。看到这里,大家会想那它究竟是哪个Activity的别名呢?原创 2016-06-12 20:24:28 · 33267 阅读 · 12 评论 -
Android开发的二十条经验
我们可以通过自己的摸索实践学到知识,还可以通过学习他人的经验来提升自己,显然第二种是更快的方式。下面是日常Android开发过程中总结出来的一些经验,分享如下:IDE首选Android Studio,并善用优秀的Android Studio插件,如ADB Idea、GsonFormat等熟练使用常用的ADB命令,可以提高开发效率遵循Android特性与设计规范根据功能模块而不是类型来分包调原创 2017-06-21 13:11:12 · 753 阅读 · 0 评论 -
理解Android中的线程及线程间通信
Android应用启动时会创建哪些线程从一个问题开始本文,当启动一个应用时,会创建哪些线程?UI线程是肯定有的,那么还有没有其他线程呢?在Android Studio中通过adb shell命令可以查看应用的进程与线程信息,操作之前,先明确几个概念:UID——User ID,即用户id,在Android中,每个应用就代表一个用户,用户id在应用安装后就会分配。PID——Process ident原创 2016-02-29 21:44:36 · 2862 阅读 · 0 评论 -
libxxx.so- text relocations问题的终极解决方案
问题表现形式错误或警告日志当targetSdkVersion>=23且使用debug签名时,在6.0+的Android设备上运行App会输出以下错误Log: E/linker: /data/app/packagename/lib/arm/libxxx.so: has text relocations W/System.err: java.lang.UnsatisfiedLinkError:原创 2017-04-02 20:34:42 · 42885 阅读 · 17 评论 -
APK瘦身指南
用户一般会不会在应用市场上下载那些看起来很大的App,尤其是当他们使用2G或3G网络或者是按流量付费的时候。因此这篇文章将讲述如何减小APK的大小,从而让更多的用户来下载你的应用。了解APK文件的结构在探讨如何减小App大小之前,有必要先弄清楚APK文件的结构。APK实质上是一个ZIP压缩文件,它包含了构成App的所有文件,如Java类文件,资源文件,以及编译后的资源文件等。一个APK包含以下几个文翻译 2016-12-15 21:47:44 · 738 阅读 · 0 评论 -
如何配置方法数超过64K的应用
如何配置方法数超过64K的应用随着Android平台的继续成长,Android应用的大小也在变大。当一个应用及其引用的库到达一定的规模,在编译应用时就会遇到构建错误,这表示此App已经达到了Android构建系统的某个限制。在早期的构建系统版本中,此错误表现如下:Conversion to Dalvik format failed:Unable to execute dex: method ID翻译 2016-11-27 14:09:26 · 1929 阅读 · 0 评论 -
关于日益泛滥的Android第三方框架
前言目前Android开发依然很火,如果你关注GitHub,可能会发现越来越多的第三方库与框架(一些简单的库可能称不上框架,为了行文方便,后文统一称之为框架)如雨后春笋般出现。这在一定程度上反映了Android开发的繁荣,但任何事情都有其另一面,第三方框架在方便了App开发的同时,也带来了一些不利影响。最近我们在招聘2~3年工作经验的Android工程师,应聘者简历上的项目介绍无一例外都用到了大量第原创 2016-10-26 00:04:49 · 1899 阅读 · 0 评论 -
从一个崩溃再谈Context
Android Context原创 2016-08-18 14:47:17 · 1646 阅读 · 0 评论 -
图片会说话之https通信过程
整理电脑发现下面这张图片,图片来源已经不知道了。一直喜欢这种直观、明了的东西,分享给大家:https的通信过程在上图中已经标注地非常清楚,不再另做解释。原创 2016-06-21 14:10:08 · 726 阅读 · 0 评论 -
如何构建安全的Android应用
App的安全问题随着移动操作系统的日趋完善及App开发流程的逐渐成熟,App的安全问题得到越来越多的重视,同时很多App的安全问题被暴露出来,其中又以Android为甚,如App被反编译植入广告、App轻易被抓包、模拟App爬取服务器的数据等等。现在的Android开发者在开发一个App的时候,所想的就不仅仅是实现功能,而是要思考如何才能开发一个安全的应用。花了两天时间看了《构建安全的Android原创 2016-07-03 00:21:53 · 1526 阅读 · 0 评论 -
Android开发书籍推荐
Android书籍推荐作为一名Android开发者,推荐几本个人认为不错的书,本着负责任的态度,以下推荐都是个人看过的,这些书目可能更适合中高级开发者,排名不分先后:《深入理解计算机系统》——程序员是要跟计算机打交道的,那么最好首先明白它的工作原理,才能让你的代码游刃有余。《图解HTTP》——如今单机版的App还有吗?绝大多数App的网络通信是基于HTTP协议的,所以你需要深入了解它。《Eff原创 2016-06-25 23:29:29 · 2621 阅读 · 0 评论 -
Android Studio的一些配置(去拼写检查、自动import、大小写智能提示等)
偶尔使用Android Studio写App,由于习惯了ADT的一些配置,如大小写均智能提示等,因此在AS中感觉非常不习惯,不过不用担心,AS也可以做上述配置,满足你的要求。1.去拼写检查AS默认会对代码做拼写检查,如果检查有错的话会打上波浪线,当然这并不影响编译运行,但如果对代码有高度的整洁规范要求,则似乎不可容忍,具体做如下配置,可以关闭AS的拼写检查。File-->Set原创 2015-06-15 10:52:34 · 10885 阅读 · 0 评论 -
LeakCanary小记
简要介绍:LeakCanary是Square提供的一个开源类库,用于快速检测内存泄露。在LeakCanary出现之前检测内存泄露很麻烦,需要先把内存Dump出来,再用MAT(Memory Analyzer tool)等工具来分析究竟是哪里出现了内存泄露。而如果使用了LeakCanary,一旦发生内存泄露,就会得到一个如下图的提示:这种内存泄露的表现方式超级优雅而且定位精准,原创 2015-05-26 15:36:06 · 2128 阅读 · 0 评论 -
Android集成微信分享的要点及源码示例
如今,社会化分享成了App必不可少的一个功能,而其中最重要的莫过于微信分享,由于微信庞大的用户群及活跃度,因此我们的App往往都需要集成微信分享,微信开放平台也提供了相应的分享SDK。鉴于看到很多人说调不起微信分享,下面就来分享下自己的经验以及在集成微信分享过程中需要注意的地方,最终会提供自己封装好的微信分享源码示例。 其实集成的步骤在微信开放平台的文档指南中已经写的很清楚了:1.申请原创 2015-03-10 16:59:52 · 2569 阅读 · 2 评论 -
Java(Android)线程池
介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用。本文是基础篇,后面会分享下线程池一些高级功能。1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?new Thread(new Runnable() { @Override public void run() { // TODO转载 2015-03-06 10:10:04 · 894 阅读 · 0 评论 -
WebP 探寻之路
前言不管是 PC 还是移动端,图片一直是流量大头,以苹果公司 Retina 产品为代表的高 PPI 屏对图片的质量提出了更高的要求,如何保证在图片的精细度不降低的前提下缩小图片体积,成为了一个有价值且值得探索的事情。但如今对于 JPEG、PNG 和 GIF 这些图片格式的优化几乎已经达到了极致, 若想改变现状开辟新局面,便要有釜底抽薪的胆量和气魄,而 Google 给了我们一个新选转载 2015-03-02 17:45:01 · 1387 阅读 · 0 评论 -
Android图片缓存机制(Caching Bitmaps)
Android加载一张图片到用户界面是很简单的,但是当一次加载多张图片时,情况就变得复杂起来。很多情况下(像ListView、GridView或ViewPager等组件),屏幕上已显示的图片和即将滑动到当前屏幕上的图片数量基本上是没有限制的。这些组件通过重用已经移除屏幕的子视图来将降低内存的使用,垃圾回收器也会及时释放那些已经不再使用的已下载的图片,这些都是很好的方法,但是为了保持一个流畅的、翻译 2015-02-09 15:54:37 · 2227 阅读 · 0 评论