Android
文章平均质量分 84
罗拙呓
简书博客地址:http://www.jianshu.com/u/14a4c5c3afc4
展开
-
Android 内存溢出问题分析
最近的项目中,内存一直再增长,但是不知道是什么问题,导致内存溢出,在网上看到了这么一篇关于内存分析与管理的文章,解决了部分问题,感觉这篇文章还不错,就转帖到我的blog上了,希望对大家有所帮助。如果哪里有不好的地方,给留下言,然后我们大家继续完善内存泄露的问题,对大家都会有所帮助的,呵呵一、概述 1二、Android(Java)中常见的容易引起内存泄漏的不良代码 1(一) 查询数据转载 2015-04-20 18:42:40 · 622 阅读 · 0 评论 -
android的消息处理机制(图+源码分析)——Looper,Handler,Message
android的消息处理有三个核心类:Looper,Handler和Message。其实还有一个Message Queue(消息队列),但是MQ被封装到Looper里面了,我们不会直接与MQ打交道,因此我没将其作为核心类。下面一一介绍:线程的魔法师 LooperLooper的字面意思是“循环者”,它被设计用来使一个普通线程变成Looper线程。所谓Looper线程就是循环工作的线程。在程序开发中(尤转载 2015-08-15 15:59:14 · 509 阅读 · 0 评论 -
Android优化之图片优化
1. 对图片本身进行操作尽量不要使用 setImageBitmap、setImageResource、 BitmapFactory.decodeResource 来设置一张大图,因为这些方法在完成 decode 后,最终都是通过 Java 层的 createBitmap 来完成的,需要消耗更多内存。因此,改用先通过 BitmapFactory.decodeStream 方法,创建出一个 bitma原创 2015-08-16 09:23:25 · 744 阅读 · 0 评论 -
Android之AsyncTask源码解析
注释都写在代码里了,直接看代码吧:/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in complian原创 2015-08-15 18:56:51 · 724 阅读 · 0 评论 -
Activity与Fragment的生命周期
一、Activity 生命周期 二、Fragment 生命周期 三、对比图 四、测试代码package com.goso.testapp;import android.app.Activity;import android.app.ListFragment;import android.os.Bundle;import android.util.Log;import android.v转载 2015-08-16 09:29:36 · 416 阅读 · 0 评论 -
简述Java内存泄露
内存管理一直是Java 所鼓吹的强大优点。开发者只需要简单地创建对象,而Java的垃圾收集器将会自动管理内存空间的分配和释放.但在很多情况下,事情并不那么简单,在 Java程序中总是会频繁地发生内存泄露(Memory Leaks).本文阐述什么是内存泄露,为什么会泄露,以及如何防止内存泄露。内存泄露是什么? 内存泄露的定义: 当某些对象不再被应用程序所使用,但是由于仍然被引用而导致垃转载 2015-08-16 09:32:02 · 417 阅读 · 0 评论 -
Android Service的生命周期
service的生命周期,从它被创建开始,到它被销毁为止,可以有两条不同的路径:start service 被开启的service通过其他组件调用 startService()被创建。 这种service可以无限地运行下去,必须调用stopSelf()方法或者其他组件调用stopService()方法来停止它。 当service被停止时,系统会销毁它。 bind service原创 2015-08-17 14:54:46 · 624 阅读 · 0 评论 -
Android SimpleAdapter源码解析
SimpleAdapter:public class SimpleAdapter extends BaseAdapter implements Filterable { private int[] mTo; // 指向布局里面控件的id 比如:R.id.btn private String[] mFrom; // 数据来源,来自Map里面的key private原创 2015-08-06 23:57:59 · 660 阅读 · 0 评论 -
Android View的绘制流程
View 绘制机制1. View 树的绘图流程当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 draw。整个 View 树的绘图流程在ViewRoot.java类的performTraversals()函数展开,该函数所做 的工作可简单概况为是否需要重新计算视图大小(measure)原创 2015-08-19 23:11:28 · 687 阅读 · 0 评论 -
Android基础之四层架构
我们对android有了个大致的了解,知道如何搭建android的环境及简单地写一个HelloWorld程序,而且知道一个android项目包括哪些文件夹和文件及相应的作用。本篇将站在顶级的高度——架构,来看android。我开篇就说了,这个系列适合0基础的人且我也是从0开始按照这个步骤来学的,谈架构是不是有点螳臂挡车,自不量力呢?我觉得其实不然,如果一开始就对整个android的架构了然于胸,就不原创 2015-08-20 14:42:21 · 14564 阅读 · 0 评论 -
Android Service与Activity之间通信的几种方式
在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activity中启动后台Service,通过Intent来启动,Intent中我们可以传递数据给Service,而当我们Service执行某些操作之后想要更新UI线程,我们应该怎么做呢?接下来我就介绍两种方式来原创 2015-08-20 17:27:00 · 786 阅读 · 0 评论 -
Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
ZERO、前言有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当,还望指教。一、Socket通信简介Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。而Socket通信则是在双方建立起连接后就可以直接进行数据原创 2015-08-22 22:40:38 · 980 阅读 · 0 评论 -
极光推送技术原理:移动无线网络长连接
移动互联网应用现状因为手机平台本身、电量、网络流量的限制,移动互联网应用在设计上跟传统 PC 上的应用很大不一样,需要根据手机本身的特点,尽量的节省电量和流量,同时又要尽可能的保证数据能及时到达客户端。为了解决数据同步的问题,在手机平台上,常用的方法有2种。一种是定时去服务器上查询数据,也叫Polling,还有一种手机跟服务器之间维护一个 TCP 长连接,当服务器有数据时,实时推送到客户端,也就是我原创 2015-10-23 12:57:12 · 1105 阅读 · 0 评论 -
海量数据找中位数
腾讯一面问到了,用的算法导论中的Kth算法,期望时间复杂度为O(n)。后来想了想,万一数据多的来根本不能一次读入内存,这个时候该如何解决呢?题目如下: 只有2G内存的pc机,在一个存有10G个整数的文件,从中找到中位数,写一个算法。http://blog.sina.com.cn/s/blog_4a8aac970100093j.html~type=v5_one&label=rela_nextarti转载 2015-09-22 22:40:10 · 603 阅读 · 0 评论 -
Android透明化/沉浸式状态栏实践及源码分析
何为透明状态栏?有人说透明状态栏就是沉浸式状态栏,这里不多解释,详见为什么在国内会有很多用户把「透明栏」(Translucent Bars)称作 「沉浸式顶栏」?。本文将对于透明状态栏设置方法做一个讲解,以及遇到的问题该怎么解决,来面对各种需求。本文所提到的透明状态栏其实指的是将顶部的导航栏延伸到状态栏,使之浑然一体(Google官方建议状态栏颜色比导航栏的颜色略深一点),并不代表一定不设置背景色原创 2017-07-09 22:10:07 · 1060 阅读 · 2 评论 -
一句话解决的事何必说三句,Kotlin入坑指南
看到这个标题你可能觉得很奇怪,其实这里指的是Kotlin语言出色的简洁性,能比原有用Java代码实现的功能缩小三倍以上的代码量。不仅如此,这还不是Kotlin最出色的语言特性,不信你接着往下看。什么是Kotlin?Kotlin是JetBrains开发的基于JVM的语言。JetBrains是一家捷克的软件开发公司,该公司位于捷克的布拉格,研发了IntelliJ IDEA这款相对于Eclipse有较大原创 2017-07-09 22:11:45 · 753 阅读 · 0 评论 -
Kotlin Android UI利器之Anko Layouts
引言前段时间写了一篇Kotlin语法入门的文章,还没有看过的盆友请戳(这里),有的可能看完之后已经开始尝试用kotlin来写代码了。不过上篇体现的仅仅是针对于Kotlin相较于Java在用法上的扩展性以及写法上的简洁性,那么Android中还有另一个重要的组成部分,布局文件呢?接下来我们就继续看一下Anko(基于Kotlin的扩展库)对于Android传统布局文件XML做的改进及优化,以及工作原理。原创 2017-09-19 11:41:26 · 2769 阅读 · 1 评论 -
convertView.setTag解析
首先我们要知道setTag方法是干什么的,SDK解释为TagsUnlike IDs, tags are not used to identify views. Tags are essentially an extra piece of information that can be associated with a view. They are most often used as a conv转载 2015-08-13 10:59:23 · 667 阅读 · 0 评论 -
Android开发之如何保证Service不被杀掉(broadcast+system/app)
序言最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台运行,不管用户作出什么操作,都要保证service不被kill,这可真是一个难题。参考了现今各种定制版的系统和安全厂商牛虻软件,如何能保证自己的Service不被杀死呢? 其实除了常规的手段,我们可以参考一下微信和360,设置-程序-正在运行,可以看到微信是同时开启了两个进程和服务: 【有兴趣可以研究一下 守护进程 和原创 2015-08-26 23:06:05 · 819 阅读 · 0 评论 -
ViewHolder到底用什么修饰?static?final?static final?
现在大家都知道用ViewHolder来实现listview的优化了,但是,ViewHolder到底要用什么来修饰呢?这种修饰有什么意义呢?在一个ListView里面,存在多少个VIewHolder实例呢?为什么VIewHolder能够减少findview的次数,优化效率呢?为了弄清楚这个问题,我做了以下测试,测试代码很简单,就是下面这些public class MainActivity extend转载 2015-08-13 12:03:20 · 499 阅读 · 0 评论 -
出现leaked ServiceConnection 的解决办法
出现leaked ServiceConnection 的解决办法Activity com.skyace.service.MainActivity has leaked ServiceConnection com.phicomm.hu.MainActivity that was originally bound hereandroid.app.ServiceConnectionLeaked: Act原创 2015-07-07 16:10:37 · 57040 阅读 · 2 评论 -
Android中View绘制优化之一---- 优化布局层次
译序最近一直在做锁屏界面,之前也写过关于锁屏界面的一些简单原理,未曾想自己真正去深入理解锁屏时,才 发觉锁屏框架真是又大又复杂,主要体现在如下两个方面:1、界面的组成以及更新机制; 2、对电源管理的控制,在锁屏界面会禁用系统的电源管理,自己接管屏幕亮度的控制。当然还有更多的逻辑细节处理,只能耐着性子去研究了。。通过对本次锁屏界面的处理,才发现自己对View绘制还是不熟透,很多东西也没有去潜心研转载 2015-08-24 18:11:51 · 1499 阅读 · 0 评论 -
Android广播机制
1.Android广播机制概述Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景如下: 1.同一app内部的同一组件内的消息通信(单个或多个线程之间);2.同一app内部的不同组件之间的消息通信(单个进程);3.同一app具有多个进程的不同组件之间的消息通信;原创 2015-08-23 22:56:46 · 736 阅读 · 0 评论 -
Android解析四种启动模式
我们在开发项目的过程中,会涉及到该应用中多个Activity组件之间的跳转,或者夹带其它应用的可复用的Activity。例如我们可能希望跳转到原来某个Activity实例,而不是产生大量重复的 Activity。这样就需要我们为 Activity 配置特定的加载模式,而不是使用默认的加载模式。 Activity 有四种加载模式 [1] standard 模式 这是默认模式,每次激活A转载 2015-07-16 19:53:35 · 460 阅读 · 0 评论 -
Android 下拉刷新框架实现
前段时间项目中用到了下拉刷新功能,之前在网上也找到过类似的demo,但这些demo的质量参差不齐,用户体验也不好,接口设计也不行。最张没办法,终于忍不了了,自己就写了一个下拉刷新的框架,这个框架是一个通用的框架,效果和设计感觉都还不错,现在分享给各位看官。致谢:1. 感谢lk6233160同学提出的问题,旋转View时调用setRotation方法只能是在API Level11(3转载 2015-04-19 15:03:56 · 468 阅读 · 0 评论 -
Android之Broadcast详解
最近项目中用到了广播机制,顺便看了一下广播的用法:1.Android广播机制概述Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景如下: 1.同一app内部的同一组件内的消息通信(单个或多个线程之间);2.同一app内部的不同组件之间的消息通信(单个进程);3原创 2015-07-17 17:07:50 · 2197 阅读 · 0 评论 -
Android面试题集锦
1.listView的优化方式重用convertView viewHolder static class viewHolder 在列表里面有图片的情况下,监听滑动不加载图片 多个不同布局,可以创建不同的viewHolder和convertView进行重用2.listView展示数据几种形式从sqlite拉取数据源显示 从xml使用pull解析拉取数据源显示 从网络上拉取数据源显示3.ip转载 2015-08-11 22:43:55 · 508 阅读 · 0 评论 -
ListView中convertView和ViewHolder的工作原理
LsitView和Adapter参考: http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html 工作原理: 1.ListView针对List中每个item,要求adapter给我一个视图(getView) 2.一个新的视图被返回并显示如果我们有上亿个item要显示怎么办?为每个项目创建一个新视图?NO!这不可能~~转载 2015-08-11 17:32:47 · 686 阅读 · 0 评论 -
Android的View 事件传递
欢迎转载,请附出处:1、基础知识(1) 所有 Touch 事件都被封装成了 MotionEvent 对象,包括 Touch 的位置、时间、历史记录以及第几个手指(多指触摸)等。(2) 事件类型分为 ACTION_DOWN, ACTION_UP, ACTION_MOVE, ACTION_POINTER_DOWN, ACTION_POINTER_UP, ACTION_CANCEL,每个事件都是以 ACT原创 2015-08-11 16:45:23 · 1149 阅读 · 0 评论 -
Android ListView性能优化
性能优化原理ListView的设计目的就是可扩展和高性能。在实践中,这意味着:尽可能的少去执行Layout的Inflate只渲染和布置那些在可视范围内,或者即将出现在可视范围内的Itemcode第一条的原因非常简单:Layout的Inflate是消耗资源巨大的代码code。即使,Layout文件已经被高效的解析程序转换为了二进制代码code。Infalte操作依旧需要彻底包含整个XML代码树,原创 2015-08-11 13:19:30 · 759 阅读 · 5 评论 -
Activity之onSaveInstanceState()和 onRestoreInstanceState()方法
欢迎转载,请附上出处:Activity的 onSaveInstanceState() 和 onRestoreInstanceState()并不是生命周期方法,它们不同于 onCreate()、onPause()等生命周期方法,它们并不一定会被触发。 当应用遇到意外情况(如:内存不足)由系统销毁一个Activity时,onSaveInstanceState() 会被调用。但是当用户主动去销原创 2015-07-17 17:35:00 · 485 阅读 · 0 评论 -
一个经典例子让你彻彻底底理解java回调机制
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17483273),请尊重他人的辛勤劳动成果,谢谢 以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用转载 2015-07-30 19:31:23 · 490 阅读 · 0 评论 -
Android SDK下载和更新失败的解决方法
原文:http://blog.csdn.net/singleton1900/article/details/12911333 今天新装了Android Studio提示要更新sdk,遇到了更新下载失败问题:Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml Fetched Add-ons List suc转载 2015-07-19 16:59:01 · 606 阅读 · 0 评论 -
Android_APP级异常捕获实现方式
描述:App级异常捕获,并记录下CrashLog到文件。以下,代码。在Application的,onCreate中,初始化自定义的CrashHandlerimport android.app.Application;import com.tjd.appexceptioncatch.exception.CrashHandler;public class MyApplication extends Ap转载 2015-08-26 23:43:09 · 1279 阅读 · 0 评论 -
你真的理解了AsyncTask吗?
在Android应用开发的过程中,我们需要时刻注意保证应用程序的稳定和UI操作响应及时,因为不稳定或响应缓慢的应用将给应用带来不好的印象, 严重的用户卸载你的APP,这样你的努力就没有体现的价值了。本文试图从AsnycTask的作用说起,进一步的讲解一下内部的实现机制。如果有一些开发经验的人, 读完之后应该对使用AsnycTask过程中的一些问题豁然开朗,开发经验不丰富的也可以从中找到使用过程中的注原创 2015-08-13 20:34:16 · 838 阅读 · 0 评论 -
理解Fragment生命周期
官网帮助文档链接: http://developer.android.com/guide/components/fragments.html 主要看两张图,和跑代码 一,Fragment的生命周 二,与Activity生命周期的对比 场景演示 : 切换到该Fragment 11-29 14:26:35.095: D/AppListFragment(7649): onAttach 11-转载 2015-08-27 13:04:12 · 336 阅读 · 0 评论 -
图文详解 Android Binder跨进程通信机制和原理
前言如果你接触过 跨进程通信 (IPC),那么你对Binder一定不陌生虽然 网上有很多介绍 Binder的文章,可是存在一些问题:浅显的讨论Binder机制 或 一味讲解 Binder源码、逻辑不清楚,最终导致的是读者们还是无法形成一个完整的Binder概念本文采用 清晰的图文讲解方式,按照 大角度 -> 小角度 去分析Binder,即: 先从 机制、模型的角度 去分析 整个Bi转载 2018-01-15 14:51:29 · 1198 阅读 · 0 评论