在Java中,注解(Annotation)引入始于Java5,用来描述Java代码的元信息,通常情况下注解不会直接影响代码的执行,尽管有些注解可以用来做到影响代码执行。
##注解可以做什么 Java中的注解通常扮演以下角色
- 编译器指令
- 构建时指令
- 运行时指令
在Java中,注解(Annotation)引入始于Java5,用来描述Java代码的元信息,通常情况下注解不会直接影响代码的执行,尽管有些注解可以用来做到影响代码执行。
##注解可以做什么 Java中的注解通常扮演以下角色
在计算机的设计里,很多经典的书籍多为欧美人所撰写,毕竟他们占据了英语这个优势。这里的主题不是推荐英文书籍,而是推荐几本日系的计算机图书。
利用周末的时间,写了一个检测Android代码JIT友好度的工具,取个名字为DroidJitChecker。希望可以帮助大家快速发现有坏味道的代码,并且及时修正。
做开发的同学,应该都会经常接触终端,有些时候我们在终端会做一些网络操作,比如下载gradle包等,由于一些你懂我也懂的原因,某些网络操作不是那么理想,这时候我们就需要设置代理来自由地访问网络。
Shadowsocks是我们常用的代理工具,它使用socks5协议,而终端很多工具目前只支持http和https等协议,对socks5协议支持不够好,所以我们为终端设置shadowsocks的思路就是将socks协议转换成http协议,然后为终端设置即可。仔细想想也算是适配器模式的一种现实应用吧。
想要进行转换,需要借助工具,这里我们采用比较知名的polipo来实现。polipo是一个轻量级的缓存web代理程序。闲话休叙,让我们开始动手吧。
##是什么?
一言以蔽之:LeakCanary是一个傻瓜化并且可视化的内存泄露分析工具
##为什么需要LeakCanary? 因为它简单,易于发现问题,人人可参与。

这里向技术小黑屋的各位读者推荐一个活动,Google Study Jams,它是Google官方推出的一个活动,目的是帮助大家更好地入门Android。不管你是零基础的小白,还是中学生,亦或者是有经验的开发者,你都可以加入,学习,合作,分享。强烈推荐这个活动,参加进来一起和小伙伴们交流,学习,进步吧。
Android 设备已经随处可见,你想尝试一下在 Android 设备上的开发和创新吗?快来跟随 Google 的步伐,一起学习 Android 入门课吧!
提到ThreadLocal,有些Android或者Java程序员可能有所陌生,可能会提出种种问题,它是做什么的,是不是和线程有关,怎么使用呢?等等问题,本文将总结一下我对ThreadLocal的理解和认识,希望让大家理解ThreadLocal更加透彻一些。
不止一次有用到Android签名相关的知识,每次都几乎从零开始在Google上搜索找,不想在继续这样了,找了个时间好好整理了一下自己用到的一些碎片知识,于是乎放到这里,一是备忘,二是帮助别人。
春节假期,带着电脑回家,蹭着邻居的网,除夕晚上用ruby写了一个简单的工具。安利一下,广而告之。
在Android开发过程中,我们有时候需要获取当前的Activity实例,比如弹出Dialog操作,必须要用到这个。关于如何实现由很多种思路,这其中有的简单,有的复杂,这里简单总结一下个人的一些经验吧。
忙活了有一段时间,零零散散的写了一个Chrome扩展。这里发发一篇文章安利一下。
Android 6.0,代号棉花糖,自发布伊始,其主要的特征运行时权限就很受关注。因为这一特征不仅改善了用户对于应用的使用体验,还使得应用开发者在实践开发中需要做出改变。
没有深入了解运行时权限的开发者通常会有很多疑问,比如什么是运行时权限,哪些是运行时的权限,我的应用是不是会在6.0系统上各种崩溃呢,如何才能支持运行时权限机制呢。本文讲尝试回答这一些问题,希望读者阅读完成之后,都能找到较为完美的答案。
最近遇到了一个问题,关于Navigation Bar遮挡PopupWindow的问题,问题不难,粗略做一点总结。
2015年还差几天就要走了,2016年即将来到。每每辞旧迎新,必会睹物生情,有所思考。本文记录这一年的小小经历,以及近期的一些想法与感悟。
##版权说明
本文为 InfoQ 中文站特供稿件,首发地址为:http://www.infoq.com/cn/articles/android-worker-thread 如需转载,请与 InfoQ 中文站联系。
##摘要 在Android开发过程中,我们经常使用工作者线程,如AsyncTask和线程池。然而我们经常使用的这些工作者线程存在哪些不易察觉的问题呢,关于工作者线程有哪些优化呢,文本将逐一介绍并回答这些问题。
本文系2015 北京 GDG Devfest分享内容文章。
在Android中,我们或多或少使用了工作者线程,比如Thread,AsyncTask,HandlerThread,甚至是自己创建的线程池,使用工作者线程我们可以将耗时的操作从主线程中移走。然而在Android系统中为什么存在工作者线程呢,常用的工作者线程有哪些不易察觉的问题呢,关于工作者线程有哪些优化的方面呢,本文将一一解答这些问题。
数据库是应用开发中常用的技术,在Android应用中也不例外。Android默认使用了SQLite数据库,在应用程序开发中,我们使用最多的无外乎增删改查。纵使操作简单,也有可能出现查找数据缓慢,插入数据耗时等情况,如果出现了这种问题,我们就需要考虑对数据库操作进行优化了。本文将介绍一些实用的数据库优化操作,希望可以帮助大家更好地在开发过程中使用数据库。
对于任何程序来说,崩溃都是一件很难避免的事情,当然Android程序也不例外。在Android程序中,引起崩溃的多属于运行时异常或者错误,对于这些异常我们很难做到类似Checked Exception那样显式捕获,因而最终导致了程序崩溃。本文讲介绍一些如何处理崩溃的实践,比如收集崩溃的stacktrace,甚至如何避免出现程序已停止的对话框。
##版权说明 本文为 InfoQ 中文站特供稿件,首发地址为:http://www.infoq.com/cn/articles/Java-8-Lambdas-A-Peek-Under-the-Hood。如需转载,请与 InfoQ 中文站联系。
2014年3月,Java 8发布,Lambda表达式作为一项重要的特性随之而来。或许现在你已经在使用Lambda表达式来书写简洁灵活的代码。比如,你可以使用Lambda表达式和新增的流相关的API,完成如下的大量数据的查询处理:
1 2 3 4 | |
上面的示例代码描述了如何从一打发票中计算出7月份的应付款总额。其中我们使用Lambda表达式过滤出7月份的发票,使用方法引用来提取出发票的金额。
小黑屋里怎么能没有欢乐,苦逼的码农们,我要拯救不开心。
HandlerThread是Android API提供的一个便捷的类,使用它我们可以快速的创建一个带有Looper的线程,有了Looper这个线程,我们又可以生成Handler,那么HandlerThread是什么,可以做什么呢,有哪些奇技淫巧可以被我们利用呢?
在日常的Android开发中,日志打印是一项必不可少的操作,我们通过分析打印的日志可以分析程序的运行数据和情况。然而使用日志打印的正确姿势又是怎样呢,如何屏蔽日志信息输出呢,本文将逐一进行回答。
技术是没有国界的,想要学习先进的技术就不能仅仅局限于中文博客。本着独乐乐不如众的原则,这里分享几个本人一直订阅的英文博客。主要涉及的技术为Java或Android。
小黑屋里怎么能没有欢乐,苦逼的码农们,我要拯救不开心。
作为Android开发,日常的开发工作中或多或少要接触到性能问题,比如我的Android程序运行缓慢卡顿,并且常常出现ANR对话框等等问题。既然有性能问题,就需要进行性能优化。正所谓工欲善其事,必先利其器。一个好的工具,可以帮助我们发现并定位问题,进而有的放矢进行解决。本文主要介绍StrictMode 在Android 应用开发中的应用和一些问题。
做Android开发的同学们,了解cgroups的同学其实不多,cgroups是什么意思呢,在操作系统中有着什么样的作用,以及Android中的cgroups有哪些,各有什么用呢,本文将会进行逐一剖析。