android高级开发
junjianzhang
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android开发中立即停止AsyncTask和Thread的一些办法
程序开发中经常会有立即停止线程运行的需要,而通过api是没有办法实现这个目的的,因此对于这个情况,我们需要采取一些“特殊”的方式来实现:1,判断标志位的办法:我们要知道在java的线程中,没有办法停止一个正在运行中的线程。在Android的AsyncTask中也是一样的。如果必须要停止一个线程,我们可以采用这个线程中设置一个标志位,然后在线程run方法或AsyncTask的doIn原创 2015-09-18 11:30:21 · 521 阅读 · 0 评论 -
锁对象Lock-同步问题更完美的处理方式
Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我们拿Java线程(二)中的一个例子简单的实现一下和sychronized一样的效果,代码如下:[java] view plaincopyprint?转载 2015-09-17 19:46:49 · 411 阅读 · 0 评论 -
导入classes.jar到项目
1.将Launcher2项目导入eclipse中。这时候Launcher2工程已经导入到eclipse中了,不过这时候会有100多个错误.2.添加Launcher2使用的包文件。由于在Android源码中,很多方法、成员、类、包都被打上@hide标签,这些成员在SDK中没有公开,以至于在编译Launcher源码时最常遇到的类android.view.View的成员mScro转载 2015-10-20 10:41:16 · 3102 阅读 · 0 评论 -
Android 属性动画(Property Animation) 完全解析 (上)
1、概述Android提供了几种动画类型:View Animation 、Drawable Animation 、Property Animation 。View Animation相当简单,不过只能支持简单的缩放、平移、旋转、透明度基本的动画,且有一定的局限性。比如:你希望View有一个颜色的切换动画;你希望可以使用3D旋转动画;你希望当动画停止时,View的位置就是当前的位置;这些Vi转载 2015-06-10 15:52:00 · 338 阅读 · 0 评论 -
Android 属性动画(Property Animation) 完全解析 (下)
转载请标明出处:http://blog.youkuaiyun.com/lmj623565791/article/details/38092093上一篇Android 属性动画(Property Animation) 完全解析 (上)已经基本展示了属性动画的核心用法:ObjectAnimator实现动画,ValueAnimator实现动画,AnimatorSet的使用等~当然了属性动转载 2015-06-10 16:03:29 · 467 阅读 · 0 评论 -
Android Universal Image Loader 源码分析
1. 功能介绍1.1 Android Universal Image LoaderAndroid Universal Image Loader 是一个强大的、可高度定制的图片缓存,本文简称为UIL。简单的说 UIL 就做了一件事——获取图片并显示在相应的控件上。1.2 基本使用1.2.1 初始化添加完依赖后在Application或Activity中初始转载 2015-04-23 20:28:00 · 364 阅读 · 0 评论 -
android换肤实现
皮肤资源内置的方式实现换肤效果、但本篇侧重于应用中换肤功能的代码设计实现上!切换的皮肤资源位于assets下不同的皮肤资源文件夹中。 本篇demo程序的代码结构如下: 本篇实现换肤功能的代码设计 UML类图如下:本篇demo的换肤效果如下: 主要的实现代码转载 2015-05-11 15:32:47 · 767 阅读 · 0 评论 -
一种带动画自定义控件方法
主要学习对自定义控件的动画封装,下面代码是范例。public class NineLinearLayout extends LinearLayout { private final AnimatorProxy mProxy; public NineLinearLayout(Context context, AttributeSet attrs) {原创 2015-04-27 20:24:30 · 477 阅读 · 0 评论 -
android 定时器封装
好用的定时器封装工具类,谁用谁知道,代码仅供学习参考。import java.util.HashMap;import java.util.LinkedList;import java.util.Map;import java.util.Queue;import com.tcl.framework.log.NLog;import android.os.Ha原创 2015-04-29 10:04:07 · 2080 阅读 · 1 评论 -
Android M 部分API变动研究
Android M发布有一段时间了,AndroidM在API上的改动,并不比AndroidL小。我们只能感谢Google又给android程序员带来的新的研究课题,以前开发的程序如何才能在AndroidM上顺利运行,因此,让无所事事的程序又要折腾一阵子了。权限请求方式变更动态权限请求是Google在对Android的安全问题进行一次非常有效的提升,对用户是非常有用的,用户可以很任性转载 2015-11-09 10:28:29 · 517 阅读 · 0 评论 -
Android实现网络多线程文件下载
实现原理(1)首先获得下载文件的长度,然后设置本地文件的长度。(2)根据文件长度和线程数计算每条线程下载的数据长度和下载位置。如:文件的长度为6M,线程数为3,那么,每条线程下载的数据长度为2M,每条线程开始下载的位置如下图所示:(网上找的图) 例如10M大小,使用3个线程来下载,线程下载的数据长度 (10%3 == 0 ? 10转载 2015-10-28 17:20:56 · 413 阅读 · 0 评论 -
android 蓝牙通信编程
公司项目涉及蓝牙通信,所以就简单的学了学,下面是自己参考了一些资料后的总结,希望对大家有帮助。以下是开发中的几个关键步骤:1,首先开启蓝牙2,搜索可用设备3,创建蓝牙socket,获取输入输出流4,读取和写入数据5,断开连接关闭蓝牙下面是一个蓝牙聊天demo效果图:2015-09-20更新(转载 2015-11-15 00:49:20 · 1391 阅读 · 0 评论 -
类抢红包方案
主要引导用户授权、类似微信抢红包功能,也就是实时监听设备的通知栏消息,并可以捕获到通知的内容,然后进行对应的操作。之前尝试过很多方式,最后感觉前台service对于服务保活相对好使(据说这个微信也用过的方案),知情者可能要问了:前台service不是有个通知栏一直显示么?这样对用户来说不是很好。我们这里可以使用两个service互调来实现不显示通知栏,原理如下:对于 API level转载 2017-10-20 20:28:43 · 649 阅读 · 0 评论 -
Android 5.0中使用JobScheduler
介绍在Android开发中,会存在这么些场景 : 你需要在稍后的某个时间点或者当满足某个特定的条件时执行一个任务,例如当设备接通电源适配器或者连接到WIFI。幸运的是在API 21 ( Android 5.0,即Lollipop )中,google提供了一个新叫做JobScheduler API的组件来处理这样的场景。当一系列预置的条件被满足时,JobScheduler API为你转载 2016-04-21 11:12:39 · 588 阅读 · 0 评论 -
Android 上层RecoverySystem类
尝试将imx51使用OTA方式进行recovery,将android_recovery.img放入/cache/分区下然后再下一次重启的时候进行分区更新,但发现放入的文件会被莫名删除,logcat中搜索到recovery相关log,tag为recoverysystem,尝试在android工程framework的os代码中寻找代码,找到相关代码,代码最后有将cache分区进行删除仅保留last_l转载 2016-01-05 15:17:28 · 4394 阅读 · 0 评论 -
DynamicLoadApk 源码解析
1. 功能介绍1.1 简介DynamicLoadApk 是一个开源的 Android 插件化框架。插件化的优点包括:(1) 模块解耦,(2) 动态升级,(3) 高效并行开发(编译速度更快) (4) 按需加载,内存占用更低等等。DynamicLoadApk 提供了 3 种开发方式,让开发者在无需理解其工作原理的情况下快速的集成插件化功能。宿主程序与插件完全独立转载 2015-12-30 11:53:16 · 492 阅读 · 0 评论 -
Volley接口使用的重构
最近在做手机rom OTA项目,项目不算大但原来的代码耦合比较高,对后期维护不是很好,,设计的好处不用多说增强代码复用、更容易扩展、更容易读懂、更容易维护,索性大刀阔斧逐步进行代码重构、优化,其中对volley的使用也是问题比较多,所以优先重构了下,后续将逐步对各个不合理的地方重构,后面每个项目都会规划思维导图、类图进行设计不在做码农,具体代码如附件,整体设计类图如下:原创 2015-11-19 16:49:41 · 557 阅读 · 0 评论 -
goolge官方推荐图片加载框架glide使用介绍
简介:glide为Android上一个专注于图像加载和缓存的库,后续可以考虑介入此框架。使用步骤:一:导包在项目目录下,打开build.gradle文件,输入以下代码:[java] view plaincopyrepositories { mavenCentral() }转载 2015-10-30 16:29:02 · 417 阅读 · 0 评论 -
android view SurfaceView GLSurfaceView的关系和区别
Android游戏当中主要的除了控制类外就是显示类View。SurfaceView是从View基类中派生出来的显示类。android游戏开发中常用的三种视图是: view、SurfaceView和GLSurfaceView的区别如下: View:显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;必须在UI主线程内更新画面,速度较慢SurfaceView转载 2015-11-23 14:55:48 · 495 阅读 · 0 评论 -
android ANR异常解决方法
ANR(Application Not Responding)定义 在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让 用原创 2015-04-20 15:11:12 · 630 阅读 · 0 评论 -
ListView性能优化
问 :List的优化原理是什么,总共有50项,但在屏幕上只看到6项,会创建几项答: 8个,只会创建比看得见的多2个,原理如下原创 2015-04-09 16:05:52 · 635 阅读 · 0 评论 -
Android中ViewStub组件使用
1. 概述: ViewStub组件和标签的作用类似,主要是为了提高布局的重用性,及布局的模块化。它们之间最大的差别是,ViewStub中的布局不会随着它所在布局的渲染而渲染,而标签中的布局会随着它所在布局的渲染而渲染,ViewStub中的布局只有在你需要的时候才会渲染到主界面中。 2. 效果图: (1)在ButtonOne与Button转载 2015-04-22 23:12:45 · 407 阅读 · 0 评论 -
一个异步网络请求模型的实现方法
在android开发中我们常常会使用要异步队列来提升用户体验,如微信中的评论、赞都是采用异步队列来实现的,最近的项目产品也要这样的实现,本方法是采用HandlerThread+阻塞队列实现。/*** 异步网络请求模型 有队列系统,严格按照请求序列进行 */public class AsynTaskManager {private static final i原创 2015-04-11 13:48:15 · 537 阅读 · 0 评论 -
多语言国家与缩写映射表
语言类别缩写备注CHINE_NEWzh-rCN#简体中文CHINE_OLDzh-rHK#繁体中文Englishen#英语FRENCHfr#法语DUTCHnl#荷兰GERMANde#德国原创 2015-04-11 21:34:15 · 1577 阅读 · 0 评论 -
通用ViewHolder的写法
public class ViewHolder { // I added a generic return type to reduce the casting noise in client code @SuppressWarnings("unchecked") public static T extends View> T get(View view, int id) {原创 2015-04-11 21:20:51 · 400 阅读 · 0 评论 -
一个简单androidUI框架的实现
在android开发过程中往往是多个人一起开发一个项目,那么我们如何保持ui设计代码一致性呢,这个当然最好有一个架构设计师先把框架搭出来,后面大家按这个框架来设计才能保证项目及代码的质量,下面是一个简单ui框架用来分享学习。/** * @Description:TitleBaseActivity基类 * */public abstract class TitleB原创 2015-04-11 14:08:21 · 849 阅读 · 0 评论 -
一个android service下多任务的设计
在android开发当中我们时常会使用到service,往往我们会直接开启一个服务在服务中开启各种线程做各种事件,这样当然可以完成一个编码的任务但耦合性非常高,一旦有需求改动就要大批量改代码,偶然的机会看到一个大师对这块的处理感觉不错,写出来记录下供参考学习,下次碰到相关服务可以采用这样的方式设计减低耦合性。//定义一个通用接口public interface ProxyableServi原创 2015-04-11 14:31:58 · 3653 阅读 · 0 评论 -
java设计模式基础-单例模式的几种写法
第一种(线程不安全,多线程不能正常工作):public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == n转载 2015-04-11 13:24:53 · 482 阅读 · 0 评论 -
开源消息总线eventBus学习
在编程过程中,当我们想通知其他组件某些事情发生时,我们通常使用观察者模式,正式因为观察者模式非常常见,所以在jdk1.5中已经帮助我们实现了观察者模式,我们只需要简单的继承一些类就可以快速使用观察者模式,在Android中也有一个类似功能的开源库EventBus,可以很方便的帮助我们实现观察者模式,那么我们就开始学习如何使用EventBus.对于EventBus我更关注其中对消息队列的实现上,其中原创 2015-04-11 20:55:18 · 721 阅读 · 0 评论 -
谈谈对handler,Looper,Message的android消息处理机制
Android是消息驱动的,实现消息驱动有几个要素:消息的表示:Message消息队列:MessageQueue消息循环,用于循环取出消息进行处理:Looper消息处理,消息循环从消息队列中取出消息后要对消息进行处理:Handler 为一个线程建立消息循环有四个步骤: 1、 初始化Looper 2、 绑定h原创 2015-04-11 20:28:06 · 421 阅读 · 0 评论 -
今天终于开博了
工作6、7年了今天终于开博了,之所以开博还是源于在学习技术的过程中发现学习的内容经常容易忘记,为了能经常回顾重要的知识点、博客是个很好的选择,记录学习的点点滴滴。或许还有意外的惊喜!今天是开博第一天以此留念!原创 2015-04-09 15:23:41 · 425 阅读 · 0 评论 -
使用Memory Analyzer Tool(MAT)Eclipse插件分析内存泄露
果使用DDMS确实发现了我们程序中存在内存泄露,那如何定位到具体出现问题的代码片段,最终找到问题所在呢?如果从头到尾分析代码逻辑,那肯定会把人逼疯,特别是在维护别人写的代码的时候。这里介绍一个极好的内存分析工具Memory Analyzer Tool(MAT)。1、在Eclipse中安装和使用MAT步骤 MAT是一个Eclipse插件,同时也有单独的RCP客户端。 如果安装E原创 2015-04-21 15:34:38 · 633 阅读 · 0 评论 -
ViewPagerindicator 源码解析
1. 功能介绍1.1 ViewPagerIndicatorViewPagerIndicator用于各种基于AndroidSupportLibrary中ViewPager的界面导航。主要特点:使用简单、样式全、易扩展。2. 总体设计该项目总体设计非常简单,一个pageIndicator接口类,具体样式的导航类实现该接口,然后根据具体样式去实现相应的逻辑。 IcsLin转载 2015-04-23 20:26:07 · 351 阅读 · 0 评论 -
Andriod Service 基本概念
1、Service的种类按运行地点分类:应用本地服务(Local)远程服务(Remote)应用本地服务(Local)1) 区别:该服务依附在主进程上,2) 优点:服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local服务因为是在同一进程因此不需要IPC,也不需要AIDL。相应bindService会方便很多。3) 缺点:原创 2015-04-16 11:23:10 · 381 阅读 · 0 评论 -
谈谈对HandlerThread的理解
一.介绍 HandlerThread继承自Thread,当线程开启时,也就是它run方法运行起来后,线程同时创建了一个含有消息队列的Looper,并对外提供自己这个Looper对象的get方法,这就是它和普通Thread唯一不同的地方。二.好处1.开发中如果多次使用类似new Thread(){...}.start原创 2015-04-11 20:16:01 · 3259 阅读 · 0 评论 -
android sharedpreferences封装简单实用
public final class PrefsUtils{// private static final String PREFS = "qt_prefs";private static SharedPreferencespref = null;private static SharedPreferences.Editoreditor = null;p原创 2015-04-15 11:17:15 · 452 阅读 · 0 评论 -
android Home键监听封装
public class HomeWatcher { static final String TAG = "HomeWatcher"; private Context mContext; private IntentFilter mFilter; private OnHomePressedListener mListener;原创 2015-04-15 14:10:02 · 421 阅读 · 0 评论 -
Universal Image Loader异步显示图片的完美封装
我们在使用Universal Image Loader的时候可能会有显示不同默认图片的需求,采用下面封装来实现事半功倍,其中RoundedImageView继承ImageView的圆角图片控件AsyncRoundedImageView 继承RoundedImageView,获取自定义属性实现对Universal Image Loader显示的封装,话不多说,上源码。public c原创 2015-04-15 10:10:18 · 472 阅读 · 0 评论 -
反射获取对象成员的字段值,getFields()和getDeclaredFields()用法区别
getFields()只能获取public的字段,包括父类的。 而getDeclaredFields()只能获取自己声明的各种字段,包括public,protected,private。 而我写的Characters类中的属性是在继承父类的,父类中是protected的,所以获取不到,这个弄了我半天!最后只要把父类的protected属性全改成public的就ok了啊。。转载 2015-04-14 11:57:35 · 2848 阅读 · 0 评论 -
android Http分块顺序上传大视频
最近项目组需求上传大视频到服务器,纵观海量应用支持上传大视频、大文件的聊聊无几,经过和服务器共同制定方案采用分块顺序上传,最后确定采用http协议来实现,问题来了,http不可能直接读取很大的视频文件一定会导致oom,而且传送很容易失败,一旦失败又要重新开始传输,这样体验可想而知,最后我们采用断点续传的方式来实现,最终的效果可谓杠杠的,可以自信的说不在优酷视频上传体验之下。具体步骤简单记录下来,方原创 2015-04-14 17:01:46 · 4271 阅读 · 2 评论
分享