
Android
文章平均质量分 91
linroidh
Talk is cheap,show me the code.
展开
-
Android 热更新——非侵入AOP框架
Android 客户端应用上线以后,一旦出现Bug,一般的解决思路是发修复包升级应用,这种方式不仅耗时,更重要的是用户需要频繁的升级版本,体验不好,所以优化的思路是在不发版本的情况下热更新,以期提高用户体验。近期GitHub新出一种非侵入运行期AOP框架Dexposed, 下面简单了解一下这个框架,GitHub地址。简要说明:该框架基于AOP思想,支持经典的AOP使用场景,可应用于日志记录,性能统原创 2015-08-29 15:49:33 · 1614 阅读 · 0 评论 -
Android 多渠道打包方案问题记录及解决方案
[Android 多渠道打包方案][1] 中已经介绍了基本的思路和基本的源代码,这里给出实践过程出现的问题和解决思路。首先如果你没有使用上篇博客中给出的Python脚本,而是自己写了shell脚本或者其他脚本,如果实现思路如下:原创 2015-09-10 20:57:20 · 1960 阅读 · 0 评论 -
Android requestLayout 和 invalidate
这两个方法很多人 搞不太清楚,这里小结一下:View的流程图 对于标题提及的两个方法 调用invalidate()或者requestLayout()会触发哪些方法,一图道破天机。源代码现在来看看具体的代码: android.view.ViewRootImpl@Overridepublic void requestLayout() { if (!mHandlingLayoutInLayou原创 2015-07-20 21:54:05 · 2147 阅读 · 1 评论 -
Android Image Loader 第三方库对比测试
预热知识测试前,我们需要先明白这样一个问题 Java Heap / Native Heap 各自代表什么? Bitmap 到底是分配在Java heap上 还是分配到了Native heap上 Java Heap 大小一般是多大,有限制吗? Native Heap大小一般是多大,有限制吗? Java OOM 一般是发生在什么时候,和Java Heap有关还是和 Nativ原创 2015-07-19 23:00:30 · 2484 阅读 · 1 评论 -
Android 坐标常识
大部分Android开发人员都对View的坐标感到有点迷茫,尤其是初学自定义View的同学,这里博主和同学们一起来学习一下自定义View开发中用到的必不可少的Android坐标问题:View 坐标废话少说,先上图:上面这个图就是Android的系统坐标,它和笛卡尔坐标Y轴方向正好是反的,而X轴方向相同,当屏幕内容显示不下的时候,会超出一屏,于是就出现了ScrollView,在该类的父类View中有个原创 2015-06-14 22:29:56 · 1272 阅读 · 0 评论 -
Android 获取View的高度和宽度
View宽高值为什么是0如果我们想获取View的高度和宽度,通过在onCreate()或者onStart()或者onResume()等生命周期中直接获取,像下面这样处理会获取到View的高度吗?package com.wjj.imagepull;import android.app.Activity;import android.os.Bundle;import android.util.Log原创 2015-06-14 15:43:31 · 2174 阅读 · 0 评论 -
Fragment Commit 异常处理
自从Honeycomb发布后,像下面这个栈信息经常会在StackOverFlow中出现java.lang.IllegalStateException: Can not perform this action after onSaveInstanceStateat android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentMa翻译 2015-08-24 22:27:24 · 1978 阅读 · 0 评论 -
Android ListView 多种布局--初步
提出问题先看下面这个ListView该如何实现上面这个需求?解决问题我们知道ListView数据绑定类BaseAdapter有个getItemViewType,这个方法完全满足上面的要求,下面写个简单的Demo实现上面的需求。定义主UI R.layout.activity_listview_type<?xml version="1.0" encoding="utf-8"?><LinearLay原创 2015-06-29 23:15:07 · 1810 阅读 · 0 评论 -
Android Dex 64k Method Size Limit
问题Android 开发一年以上或者更久,大部分会遇到如下问题:64K Unable to execute dex: method ID not in [0, 0xffff]: 65536 Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 Lin原创 2015-11-04 15:58:30 · 984 阅读 · 0 评论 -
Android BroadCast (一)
Android BroadCast (一)我们先来看看网络上对BroadCast较为普遍的看法:到底怎么看待BroadCast 如果需要完成一项比较耗时的工作 , 应该通过发送 Intent 给 Service, 由 Service 来完成 . 这里不能使用子线程来解决 , 因为 BroadcastReceiver 的生命周期很短 , 子线程可能还没有结束 BroadcastReceiv原创 2015-06-01 21:29:20 · 531 阅读 · 0 评论 -
Android 绘制虚线
简单需求先来看看这么一个需求 水平虚线如果需要完成上面的水平虚线,可以这样处理。声明shape,其中dashGap是虚线的间隔宽度,dashWidth是实线的间隔宽度,stroke翻译过来是名词,画<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/and原创 2015-10-26 15:20:11 · 3501 阅读 · 0 评论 -
MVX Android设计架构浅析-MVVM
简介读过MVX Android设计架构浅析的童鞋应该还记得2005年微软工程师John Gossman在自己的博客上首次公布了MVVM模式。时隔10年之久才在Android活跃起来,究其原因是之前Android并不支持Data-binding,所以在了解MVVM之前很有必要对Data-binding有个充分的认识。当然这里不是重点,所以不再深究。那么MVVM和前篇博客中介绍的MVX Android设原创 2016-04-26 11:43:17 · 1428 阅读 · 0 评论 -
MVX Android设计架构浅析-MVP
简介MVX Android设计架构浅析-MVC 读过这篇文章以后,应该对MVC框架有个大概的了解,这也是大部分Android应该的常用框架,但是这种框架给人的感觉更像是 View-Module框架,因为View层的确没有显现出来,而且View和Module的耦合度较高,到最后会像下图一样,业务逻辑和View展现紧密耦合在一起,相互交错,随着项目的壮大以后很难维护。这么复杂的交互基本集中在Activi原创 2016-04-26 11:43:58 · 976 阅读 · 0 评论 -
Android 在线热修复框架 AndFix 初步
AndFix工作流程关于AndFix的基本使用和使用流程在AndFix官方Github上已经说的比较详细,这里提取一下基本的修复流程,帮助初次使用者快速的使用AndFix,下面是简要流程图。上面的流程不细说,接下来看看github上Download下来的代码导入Eclipse,对于Android Studio导入不再给出。AndFix Demo导入Android工程 解压,导入Android工程原创 2016-03-03 10:03:04 · 940 阅读 · 0 评论 -
MVX Android设计架构浅析
MV“X”基本概念 M:Model —— 模型:数据存取、处理 V:View —— 视图:UI界面显示、交互 C: Controller——控制器:逻辑控制、处理 P: Presenter——引荐者:逻辑处理、视图更新 VM:ViewModel——视图模型:逻辑处理、双向绑定MV“X”历史MVC 80年代Smalltalk-80出现的一种软件设计模式,后来得到了广泛原创 2016-04-26 11:45:11 · 1562 阅读 · 0 评论 -
MVX Android设计架构浅析-MVC
简述在Android开发中,比较流行的开发框架模式采用的是MVC框架模式,采用MVC模式的好处是便于UI界面部分的显示和业务逻辑,数据处理分开。那么Android项目中哪些代码来充当M,V,C角色呢?Module层:适合做一些业务逻辑处理,比如数据库存取操作,网络操作,复杂的算法,耗时的任务等都在model层处理。View层:应用层中处理数据显示的部分,XML布局可以视为V层,显示Model层的原创 2016-04-26 11:44:36 · 830 阅读 · 0 评论 -
Handler 详解
这个详解基本小结了Handler的使用和相关的知识,在了解这些知识前,我们先来看看这些问题.Handler 是什么?子线程更新UI有几种典型方式,这些方式本质上是什么样的?子线程真的不能更新UI吗?HandlerThread是什么?主线程和子线程之间如何相互通信?好了,如果上面的问题,你能对答如流,并且深知其中的原理那么没有必要继续看下去了,反之,就该好好补补了(^o^)/~。Handle原创 2015-06-22 13:41:55 · 6795 阅读 · 2 评论 -
Android 启动模式
Android 启动模式首先我们来认识一下App和进程的关系 众所周知,Android下有四大组件:Activity、Service、Receiver、ContentProvider。一般开发一个应用程序,会包含多个Android组件,所以应用程序是一组组件的集合,而进程则是运行这些组件的载体。由上面的描述,我们知道,App仅仅是静态的概念,它把Android的四大组件打包在一起,而事实上Ap原创 2015-06-01 21:24:15 · 812 阅读 · 0 评论 -
Android 序列化比对
Android 序列化比对 在Android中使用序列化,无非两种途经: Parcelable 和 Serializable两者区别Serializable的作用是为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Androi翻译 2015-06-01 21:26:42 · 740 阅读 · 0 评论 -
Android BroadCast (二)
Android BroadCast (二)Android BroadCast (一) 揭开了关于BroadCast网络上普遍的误解,这里进一步对BroadCast发送的两种方式做基本的介绍:Application”广域网”广播先看代码:getActivity().sendBroadcast(new Intent("Action")); 假如这个是在Fragment中的一处代码,我们顺着这个代码原创 2015-06-01 21:27:04 · 589 阅读 · 0 评论 -
Android View 分析(下)
Android View 分析(下)本文接着 Android View 分析(中)继续分析ViewRootImpl.performTraversals(…)这个成员方法比较出名,也比较庞大,初看可能会迷失方向,所以我们先给出这个方法的执行路径图:再看一下牛逼的源代码 private void performTraversals() { // cache mView since it转载 2015-06-01 21:18:18 · 698 阅读 · 0 评论 -
Android Service
Android ServiceService啥也不说直接上代码public class AppService extends Service{ private static final String TAG = "ExampleService"; private final AppBinder mAppBinder = new AppService.AppBinder();原创 2015-06-01 21:07:49 · 498 阅读 · 0 评论 -
Android 进程间通信IPC_AIDL
Android 进程间通信IPC_AIDLAIDL概念 AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码。如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以转载 2015-06-01 21:26:06 · 540 阅读 · 0 评论 -
Android View 分析(中)
Android View 分析(中)ViewRootImpl.setView(…)我们接着Android View 分析(上)继续分析,首先分析 setView(...) 这个方法。/** * We have one child */public void setView(View view, WindowManager.LayoutParams attrs, View panelParent原创 2015-06-01 21:18:27 · 528 阅读 · 0 评论 -
Android Socket
Android Socket客户端编程步骤:1: 创建客户端套接字(指定服务器端IP地址与端口号) 2: 连接(Android 创建Socket时会自动连接) 3: 与服务器端进行通信 4: 关闭套接字 客户端先建立连接后先获得输出流,然后再获得输入流。不然活有EOFException的异常。 中间的管道连接是通过InputStream/OutputStream流实现的。转载 2015-06-01 21:07:26 · 511 阅读 · 0 评论 -
Intent Filters
Intent Filters先来看一下Google 官方文档关于intent-filter的说明 或者 intent 的官方说明 看完上面的官方文档,我们来回答几个问题:intent-filter这厮是干什么的它包含哪些ID这些ID哪些是必须申明的,哪些是不必声明的这些ID具体是干什么的好了,看完上面的官方文档,如果你觉得回答不了上面的几个问题,那么有必要继续往下看了场景在了解Inten原创 2015-06-01 21:04:22 · 477 阅读 · 0 评论 -
Android 代码优化
Android 代码优化有这样一个话题在 StackOverflow: 上提起过: What is the best way to retain active objects—such as running Threads, Sockets, and AsyncTasks—across device configuration changes?简单的说: AnsyncTask & Socket翻译 2015-06-01 21:34:42 · 732 阅读 · 0 评论 -
Android View 分析(上)
Android View 分析(上)Set ContentView做Android开发,在Activity中最熟悉的莫过于这么一个方法:@Overridepublic void onActivityCreated(Bundle savedInstanceState){ setContentView(R.layout.activity_main);}不妨追踪setContentView下原创 2015-06-01 21:19:22 · 770 阅读 · 0 评论