android
文章平均质量分 55
楠来风
果断,果敢
展开
-
Android 系统稳定性 - OOM(二)
无论怎么小心,想完全避免 bad code 是不可能的,此时就需要一些工具来帮助我们检查代码中是否存在会造成内存泄漏的地方。既然要排查的是内存问题,自然需要与内存相关的工具,DDMS和MAT就是两个非常好的工具。下面详细介绍。2.3.1 内存监测工具 DDMS --> HeapAndroid tools 中的 DDMS 就带有一个很不错的内存监测工具 Heap(这里我使转载 2016-04-07 17:50:39 · 514 阅读 · 0 评论 -
android系统内存不足时,应用被系统回收发生了什么?
android独特的内存机制,导致系统内存不足时会销毁后台的应用,这里我们研究一下应用被销毁后重新加载时的情形 一个安卓应用A先后打开3个Activity: a --> b --> c 这个时候如果来了一个电话, 接电话的过程中, 手机内存不够, 那么应用A将会被系统回收 当打完电话,再次进入应用A的时候会发生下面的事情: 1, 系统会重新加载c,而且转载 2016-05-30 11:04:41 · 952 阅读 · 0 评论 -
android studio 更新 Gradle错误解决方法
android Studio每次更新版本都会更新Gradle这个插件,但由于长城的问题每次更新都是失败,又是停止在Refreshing Gradle Project ,有时新建项目的时候报 Gradle Project Compile Error 等等相关的问题解决这些问题办法是首先打开android studio项目 找到项目目录gradle\wrapper\gradle-wra转载 2014-11-04 12:16:12 · 3724 阅读 · 1 评论 -
LeakCanary开源项目(使用及原理github项目文档的翻译)
前两天,Square开源了一个内存泄露自动探测神器——LeakCanary,它是一个Android和Java的内存泄露检测库,可以大幅度减少了开发中遇到的OOM问题,对于开发者来说,无疑是个福音,下面对该库的readme进行简单的翻译:“A small leak will sink a great ship.” - Benjamin Franklin小漏不补沉大船。——本杰明 富兰克林转载 2016-06-02 15:40:05 · 708 阅读 · 0 评论 -
Android Studio加速
Android Studio慢、吃内存!启动时后会立即通过Gradle来sync & build工程。 (1)设置Android Studio a) 禁用插件 File -> Settings... Plugins 去掉一些没有用的插件。 比如:Git Integration、GitHub、Google Cloud Testing、Google Cloud Tools For转载 2016-06-03 14:50:22 · 375 阅读 · 0 评论 -
python: android批量多渠道打包
安卓市场太多,一个一个手动打包太累而且容易出错。看过有很多Ant批量打包的,还是想试试不一样的方法。举个例子,如友盟(真心不是给他打广告)的多渠道统计我们只是需要动态的修改这个channel_value,然后打包就可以了。思路1.导出一个未签名的apk包,其中渠道号配置如上图。2.使用apkTool解压apk包转载 2016-06-03 14:58:52 · 405 阅读 · 0 评论 -
Android -- Annotation
Override Annotation@Overridepublic void onCreate(Bundle savedInstanceState){};概念An annotation is a form of metadata, that can be added to Java source code. Classes, methods, variables,转载 2016-06-06 17:00:28 · 265 阅读 · 0 评论 -
Android批量打包
使用Ant或者Gradle来给程序进行多渠道批量打包,通常都是在manifest文件中写入一个meta标签:meta-data android:name="CHANNEL" android:value="xxx" />meta的key值固定,通过循环改变meta中的value值来实现市场渠道的写入。Ant批量打包实现相对麻烦,以前写的时候多亏了谦虚的天下-《App自动化之使用A转载 2016-06-12 17:04:07 · 366 阅读 · 0 评论 -
深入理解Java:注解(Annotation)--注解处理器
如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重要的一部分就是创建于使用注解处理器。Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。注解处理器类库(java.lang.reflect.AnnotatedElement): Java使用Annotation接口来代表程序元素前面的注解,该接口是所有Anno转载 2016-06-07 11:07:14 · 364 阅读 · 0 评论 -
Android中Looper的quit方法和quitSafely方法
Looper是通过调用loop方法驱动着消息循环的进行: 从MessageQueue中阻塞式地取出一个消息,然后让Handler处理该消息,周而复始,loop方法是个死循环方法。那如何终止消息循环呢?我们可以调用Looper的quit方法或quitSafely方法,二者稍有不同。 Looper的quit方法源码如下:public void quit() { mQueue.q转载 2016-05-28 10:31:36 · 1938 阅读 · 0 评论 -
Android中糟糕的AsyncTask
AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合。其实AsyncTask并不是那么好,甚至有些糟糕。本文我会讲AsyncTask会引起哪些问题,如何修复这些问题,并且关于AsyncTask的一些替代方案。AsyncTask从Android API 3(1.5 Cupcake)开始,AsyncTask被引入用来帮助开发者更简单地管理线程。实际上在A转载 2016-05-27 17:00:47 · 241 阅读 · 0 评论 -
Android Binder设计与实现 - 实现篇
在学习Android的Binder机制时,看了http://blog.csdn.net/universus/article/details/6211589这篇文章(读本文前最好读一下),觉得写得非常棒,可惜只有设计篇,都几年了还没有实现篇,就想尝试完成这个工作,虽然可能没有universus写得那么好,但也希望能对同在学习Android的Binder机制的人有所帮助。同时如果文中如果有什么理解错误转载 2016-04-18 17:29:01 · 566 阅读 · 0 评论 -
使用Android studio分析内存泄露
This post is a permitted translation of badoo Tech Blog and I add some text and screenshots for android studio users.Origin Author: Dmytro Voronkevychfollow badoo on Tweet Translator: Miao转载 2016-04-12 14:10:51 · 335 阅读 · 0 评论 -
简析Android的垃圾回收与内存泄露
Android系统是运行在Java虚拟机上的,作为嵌入式设备,内存往往非常有限,了解Android的垃圾回收机制,可以有效的防止内存泄露问题或者OOM问题。本文作为入门文章,将浅显的讨论垃圾回收与内存泄露的原理,不讨论Dalvik虚拟机底层机制或者native层面的问题。1. 基础在分析垃圾回收前,我们要复习Java与离散数学的基础。实例化:对象是类的一个实例,创建对象的过原创 2016-04-12 15:39:23 · 317 阅读 · 0 评论 -
android图片压缩质量参数Bitmap.Config RGB_565 ARGB_8888
android中的大图片一般都要经过压缩才显示,不然容易发生oom,一般我们压缩的时候都只关注其尺寸方面的大小,其实除了尺寸之外,影响一个图片占用空间的还有其色彩细节。打开Android.graphics.Bitmap类里有一个内部类Bitmap.Config类,在Bitmap类里createBitmap(intwidth, int height, Bitmap.Config config转载 2016-04-13 11:36:23 · 453 阅读 · 0 评论 -
Android】开发优化之——调优工具:dump hprof file 查看内存情况,找到内存泄露,androidhprof
虽说知道一般性的开发android应用需要注意的问题,可是也有水平参差不齐的情况,特别是维护代码,如果内存占用大,内存溢出严重,又怎么解决呢? -- 通过DDMS把heap抓出来分析1、打开DDMS2、选中需要查看的程序,并且点击Update Heap图标3、查看Heap情况但是这仅仅是查看转载 2016-04-08 12:05:13 · 4286 阅读 · 0 评论 -
Android 内存剖析 – 发现潜在问题
简介移动平台上的开发和内存管理紧密相关。尽管随着科技的进步,现今移动设备上的内存大小已经达到了低端桌面设备的水平,但是现今开发的应用程序对内存的需求也在同步增长。主要问题出在设备的屏幕尺寸上-分辨率越高需要的内存越多。熟悉Android平台的开发人员一般都知道垃圾回收器并不能彻底杜绝内存泄露问题,对于大型应用而言,内存泄露对性能产生的影响是难以估量的,因此开发人员必须要有内存分析的能力。本转载 2016-04-11 18:44:43 · 413 阅读 · 0 评论 -
Binder设计与实现 - 设计篇
Binder Android IPC Linux 内核 驱动摘要Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统IPC做对比有助于我们深入领会进程间通信的实现和性能优化。本文将对Bind转载 2016-04-15 15:16:22 · 347 阅读 · 0 评论 -
android 面试
1. SharedPreferences是以XML的格式以文件的方式自动保存的,在DDMS中的File Explorer中展开到/data/data//shared_prefs下,以上面这个为例,可以看到一个叫做SETTING_Infos.xml的文件原创 2016-04-17 21:12:34 · 197 阅读 · 0 评论 -
EventBus使用详解
前言:EventBus出来已经有一段时间了,github上面也有很多开源项目中使用了EventBus。所以抽空学习顺便整理了一下。目前EventBus最新版本是3.0,所以本文是基于EventBus3.0的。相关文章EventBus使用详解 EventBus源码解析概述EventBus是针一款对Android的发布/订阅事件总线。它可以让我们很轻松的实现在Andro转载 2016-05-25 15:16:40 · 242 阅读 · 0 评论 -
避免Activity内存泄露
在android中context可以作很多操作,但是最主要的功能是加载和访问资源。在android中有两种context,一种是 application context,一种是activity context,通常我们在各种类和方法间传递的是activity context。比如一个activity的onCreate:protected void onCreate(Bundle state转载 2016-06-15 10:48:48 · 307 阅读 · 0 评论 -
Rebound-Android的弹簧动画库
Rebound是facebook出品的一个弹簧动画库,与之对应的iOS版本有一个pop动画库,也是非常的强大给力。Facebook真是互联网企业中的楷模,开源了很多的实用开源库,大赞一个!!!讲解Rebound之前,先看看我们根据Rebound高仿的新浪微博弹出菜单,看效果图:话说回来,facebook为啥推出这个库呢?主要就是现有的动画离真实物理世界差别比较明显,为了让动转载 2016-08-15 15:38:06 · 598 阅读 · 0 评论 -
Android 弹簧动画效果
一、概述Rebound 通过胡克定律,实现的一个类似“弹簧”动画效果的第三方工具包,由FaceBook退出,于2013年10月正式发布,旨在解决笨重、缓慢的传统移动网络界面。先上几张效果图: 特点:Rebound 可以使你的动画看起来像真实自然,像真实世界物理运动Rebound 不是一个物转载 2016-08-15 15:45:32 · 2330 阅读 · 1 评论 -
Fragment正规写法,不产生漏洞
1.onCreate中默认显示 不保留活动,从后台切到前台后,不需要去重复创建,系统会自动帮你创建(避免重复创建fragment实例)2.FragmentManager负责activity中的fragment的存储管理 FragmentTransaction负责activity中的fragment的事务操作 如果FragmentManager中已经存储了要显示的frag原创 2016-12-20 11:49:04 · 362 阅读 · 0 评论 -
使用Android 5.0的Camera v2拍照
Android 5.0对拍照API进行了全新的设计,新增了全新设计的Camera v2 API,这些API不仅大幅提高了Android系统拍照的功能,还能支持RAW照片输出,甚至允许程序调整相机的对焦模式、曝光模式、快门等。Android 5.0的Camera v2主要涉及如下API。Ø CameraManager:摄像头管理器。这是一个全新的系统管原创 2017-01-15 18:55:25 · 1196 阅读 · 0 评论 -
自定义view控件
1.组合控件 继承Layout (如RelativeLayout),加载布局,获取控件,添加自定义点击事件,2. 自绘控件在控件的初始化时候,初始化画笔,Rect边界和控件的点击事件;在onDraw中用画布去绘制样式;还可以自定义onTouch点击事件,postInvalidate()去重绘接着就可以在layout布局中去写调用这个自定义的view了。3原创 2017-02-17 14:24:37 · 249 阅读 · 0 评论 -
多线程开发(二)-Thread、 Looper与Handler关系解密
第3节 Handler多个线程之间除了有“执行的同步”关系,还有“数据的共享”关系,以及“功能的委托”关系。例如之前提到的视频信息显示到列表上,委托数据查询功能:主线程启动一个工作线程thread-查询视频信息;委托数据的界面更新功能:工作线程查询完成后,因为不能够修改界面元素,所以必须将结果通知到主线程,委托主线程将结果的结果显示到界面上。为此,Android S转载 2017-02-10 15:40:55 · 951 阅读 · 0 评论 -
美团大众点评 Hybrid 化建设
上周末,精神哥去参加了好友小青在北京办的T沙龙,探讨移动端热更新相关的话题。Bugly曾为大家介绍过不少腾讯内部的热更新的框架,正好这次看到了美团,去哪儿以及微博同学在应用热更新方面的实践,整理出来发给大家,本周整理的是美团大众点评的吴卓同学分享的分享的 美团 Hybrid 化建设,其他的内容也会在后面陆续放出。Hybrid 是移动端热更新最常用的手段,限于 App Store转载 2017-02-13 14:20:49 · 739 阅读 · 0 评论 -
那些年,我们一起写过的“单例模式”
题记度娘上对设计模式(Design pattern)的定义是:“一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。”它由著名的“四人帮”,又称 GOF (即 Gang of Four),在《设计模式》(《Design Patterns: Elements of Reusable Object-Oriented Software》)一书中提升到理论高度,并将之规范化。在我看来转载 2017-03-15 15:46:57 · 682 阅读 · 0 评论 -
Java Object对象之clone方法
克隆的目的:快速创建一个已有对象的副本。克隆的步骤:创建一个对象将原有对象的数据导入到新创建的数据中1. Object的clone()源代码简介[java] view plain copy /** * Creates and returns a copy of this {@code Object转载 2017-03-15 17:04:17 · 432 阅读 · 0 评论 -
Android学习之RecyclerView带刺的玫瑰
上述小诗先逗比一下,接下来切入正题;自从RecyclerView的诞生起,人们就为她贴上了高贵的标签;她灵活华丽高度可定制,而另一边ListView确已是明日黄花;人们趋之若鹜的奔向了RecyclerView赞美她吹捧她似乎一切的一切都尽在他们的掌握中;各大技术论坛开始讲解RecyclerView是多么的好用;于是乎我也加入了使用RecyclerView的行列中,哦不!是混入了;初识Rec转载 2017-03-26 21:09:05 · 1230 阅读 · 0 评论 -
zxing 二维码扫描心得
1. CaptureActivityHandler初始化后,开始进入消息循环,一直到解析图片的result不为空,消息循环队列停止2.CameraManager2.PreviewCallback3.DecodeHandler原创 2017-01-07 17:40:18 · 431 阅读 · 0 评论 -
一个app的程序是怎么启动的
原创 2016-12-29 11:34:15 · 603 阅读 · 0 评论 -
[Android]利用run-as命令在不root情况下读取data下面的数据
正文 一、关键步骤 主要是run-as命令: over@over-ThinkPad-R52:~$ adb shell $ run-as com.package $ cd /data/data/com.package $ ls databases lib $ cd databases $ ls preferences.db转载 2017-01-04 17:49:08 · 2214 阅读 · 0 评论 -
adb操作命令详解及大全
adb是什么?:adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行转载 2016-08-15 16:30:34 · 400 阅读 · 0 评论 -
Android ORM 框架之 greenDAO 使用心得
原文:http://itangqi.me/android/using-greendao-experience/ 前言我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite。然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等。所以,适用于 Android 的ORM 框架也就孕育而生了,现在市面上主流的框架有 OrmLite、Sugar转载 2016-08-18 09:33:26 · 280 阅读 · 0 评论 -
关于fragment点击能穿透问题
本人在做项目的过程中遇到的这个问题,然后就在网上百度了一下,之后也是在csdn上看到博友发过此类问题的解决办法,所以特此重新总结一下,顺便也给自己提个醒,避免出现此类问题。好!下面我们说一下问题:举例:当我们建立一个fragment A的时候需要点击跳转到fragment B中,为了返回时不重新加载fragment A所以我们会使用add的方法来讲fragment A加入到后退转载 2016-09-12 14:48:44 · 291 阅读 · 0 评论 -
列表图片等分
1.新建一个计算图片高度的类public class NewRatioImageView extends ImageView { private float mRatio; public NewRatioImageView(Context context) { super(context); } public NewRatioImageVi原创 2016-09-06 18:04:33 · 433 阅读 · 0 评论 -
Android开发中高效的数据结构用SparseArray代替HashMap
####Android开发中高效的数据结构android开发中,在java2ee或者android中常用的数据结构有Map,List,Set,但android作为移动平台,有些api(很多都是效率问题)显然不够理想,本着造更好轮子的精神,android团队编写了自己的api用来代替java api1、SimpleArrayMap与ArrayMap实质上ArrayMap继承自Si转载 2016-11-14 18:20:54 · 335 阅读 · 0 评论 -
用树型模型管理App数字和红点提示
我们平常接触到的大部分App,在收到新消息的时候一般都会以数字或红点的形式提示出来。比如在微信当中,当某位好友给我们发来新的聊天消息的时候,在相应的会话上就会有一个数字来表示未读消息的数目;再比如当微信朋友圈里有人发布新的内容时,朋友圈的入口就会出现一个红点,而当朋友圈里有人给我们点了赞,或者对我们发布的内容进行了评论的时候,朋友圈的入口就会显示一个数字。但是,我们在试用一些新的App产品转载 2016-12-08 15:55:01 · 1696 阅读 · 0 评论