在南下的火车上

很久没坐这么长时间的火车了,从沈阳到上海的高铁需要10个半小时。高铁的环境跟多年前拥挤的火车比起来好了太多,因此可以在列车上好好思考。

阅读更多

深入理解Java泛型

泛型引入

Java是一种强类型的语言,定义一个变量时需要指明其类型。Object是所有类的基类,在Java 1.5之前,为了让类具有通用性,通常使用Object来实现参数的任意化,如将String、Double等存储为Object类型,这个过程叫做自动装箱或向上转型。但是问题在于取数据时,必须做强制类型转换,将Object向下转型为String或Double等类型。向下转型存在很大的风险,需要事先知道具体的下转型类型是什么,一旦忘记或写错,在运行必然抛出异常,但在编译期间却不易发现,因此存在极大的安全隐患,应该尽量避免使用向下转型。

阅读更多

Android微信分享闭环研究

Android微信分享闭环方案研究

很多时候我们的应用在使用微信分享内容之后,希望其他用户点击该分享内容能够跳转到我们的App,以实现闭环,这样的分享才是最有价值的。这种需求涉及到不同应用之间的交互,虽然微信提供了分享SDK,但仍然有不少限制,现在总结两种在Android平台上初步认为可行的方案:

阅读更多

非微信内置浏览器中的网页调起微信支付的方案研究

问题来源

之前在app中集成过微信支付,当时还写了一篇扫坑贴,此种微信支付方式为app支付,即在我们自己的应用中嵌入微信支付SDK,由Native代码调起微信支付。

阅读更多

Android微信支付彻底扫坑

Android客户端集成微信支付

由于公司运营需要,Android客户端要增加微信支付。在看了几遍官方文档之后,加上之前有集成微信分享的经验,所以很快就把调用微信支付的代码写好了,待微信支付相关接口完成后联调时,才发现山高路远坑深啊!从下午2点半开始调试,一直折腾到快6点,那个微信支付界面才“千呼万唤始出来”,更坑爹的是,压根儿就不是我客户端的问题,而是后台接口那边sign生成时出了问题。在解决问题的过程中,看到网上太多关于微信支付各种问题的帖子,但遗憾的是并没有找到真正有效的解决方案,所以就来彻底扫一下Android集成微信支付中的坑。

阅读更多

招聘面试感想

前段时间我们需要招聘一名高级Android工程师,招聘信息发出后陆续收到一些简历,有过招聘经验的应该知道,想招到一个合适的人并不容易,期间看了HR推过来的很多简历,也面试了很多应聘者,有些感想想跟大家分享,大概会从以下几个角度谈起。

阅读更多

Web(瓦片)地图的工作原理

译者按

在看MapBox Guides文档时,看到这篇 How do web maps work?,这篇文档通俗易懂地阐述了Web地图是如何工作的,其实更偏向讲瓦片地图的工作原理,鉴于之前很多人不了解地图切片的原理,因此简单翻译一下,由于源自MapBox文档,文中免不了涉及MapBox的相关术语,但不会影响我们的理解。

阅读更多

如何判断是否可以使用某个Intent

Android提供了一个称为Intent的强大易用的工具,Intent可以将应用转化为高等组件来使用并能比以前更好地重用代码。例如Android主屏幕和AnyCut广泛地使用Intent来创建快捷方式。虽然这种松耦合的API使用起来非常方便,但并不能保证你所发送的Intent一定会被另一个应用接收,这种情况会发生在某些特定的第三方应用程序,如Panoramio及它的RADAR Intent。

阅读更多

Android进程间通信纪要

进程间通信基础

虽然Android是基于Linux的,但在Linux操作系统中的IPC技术在Android平台中被Binder Framework替代。Messenger、AIDL等进程间通信方式底层都是基于Binder的。

阅读更多

LRU算法原理

LRU(Least Recently Used)

LRU即最近最少使用,常用作缓存算法,其原理如下。

阅读更多