自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (1)
  • 收藏
  • 关注

原创 引入OKHttp3+Retrofit2+Rxjava2网络框架

本文中引入的是截止2018年5月5号最新的OKHttp3+Retrofit2+Rxjava2库。和部分网络上的文章代码可能有部分出入。1、引入OKHttp3compile 'com.squareup.okhttp3:okhttp:3.4.1'2、引入Retrofitcompile 'com.squareup.retrofit2:retrofit:2.4.0'3、引入RxJava,这里需要同时加上R...

2018-05-07 10:30:15 629

原创 webview js注入提取html内容

需求:加载第三方的web链接时,他们的错误直接抛出在webView显示,所以我们需要抓取到webview中的html内容,然后解析出里面的错误日志,通过dialog弹出给用户。方案:1、通过HttpPost接口访问url拿到里面的错误日志,然后弹出,没有错误日志的时候,webview加载url,该方案需要额外多访问一次url,并且需要拦击到该url,如果是通过js表单的形式提交的url,web

2018-01-24 15:47:08 2256

原创 RecyclerView使用ItemDecoration设置分割线

RecyclerView使用ItemDecoration设置分割线,RecyclerView设置分割线

2017-08-18 10:28:52 1053

原创 Application回收重启程序

背景: Android系统会自动回收退到后台的应用,我们可以运行一个后台Service,让我们的应用被回收的优先级变低,当时终归还是无法保证我们的进程被系统回收。当系统被回收之后,我们缓存的一些数据也会被回收,当再次进入Activity的时候很可能会出现NULL指针异常。我们可以将数据持久化到本地,然后恢复Activity的时候从本地获取我们需要的数据。 有一些我们继承的第三方的sdk,当进程被回收之后,需要重新进行初始化,并不是简单的恢复数据就能解决的,这个时候我们可以考虑在进程被回收之后

2017-04-25 14:12:47 1828

原创 Android权限管理

我们在开发中会遇到两个问题第一:当用户第一次使用权限的时候,比如语音录制,第三方弹出对话框,这个时候我们的语音到底有没有在录制,这个录制是否有效第二:当用户永久拒绝的时候,我们如何提醒用户权限已经被拒绝,保持和6.0的一致交互。

2017-04-21 16:12:23 868

原创 组件化开发中引用aar包引起的jar包冲突问题

公司项目需要引用公司内部开发的IM组件,组件以AAR包的形式进行引入,由于IM组件相当于一个完整的项目,所以用到的jar包比较多,比如fastjson、okhttp、glide。这些jar包在项目中的common库中也有引用,所以造成了冲突。

2017-04-20 14:14:48 17934

原创 MVC模式中业务抽离的方法

导读:MVC模式的应用中,现在存在的一个普遍的问题就是用户图形界面GUI和业务逻辑的强耦合,导致在一个Activity中出现大量的业务代码,随着产品的迭代,Activity显得臃肿不堪,维护起来困难。本文将和大家分享如何将业务逻辑的代码从Activity中抽离,达到MVC模式的真正效果。

2016-04-28 15:31:51 2969

原创 抓包分析TCP的三次握手和四次握手

问题描述:       在上一遍对android设备的抓包中提到了,服务器的开发人员需要我bug重现然后提供抓包给他们分析,所以抓好包自己也试着分析了一下。发现里面全是一些TCP协议和HTTP协议。所以要想进行抓包分析,必须先了解TCP的原理。在这里通过网络抓包介绍了TCP的建立连接的三次握手和断开连接的四次握手。

2016-01-30 14:31:05 17247

原创 如何对Android设备进行网络抓包

问题描述:       前段时间自己的app访问服务器的url总是会出现间接性失败的问题,于是和服务器的同事开了个会,提出了他们服务器存在的这个bug,我的同事自然说自己的服务器没问题,然后要我重现bug然后提供抓包给他分析。所以我自己去折腾了各种网络抓包的方法,下面介绍一种实际可行的对android设备抓包的方法。

2016-01-30 13:34:01 3674

原创 Handler详解

问题描述:利用Handler能够轻松的将任务发送到Handler所在的线程进行处理。Android中用到最多的是将在线程中访问网络获取到的数据通过Handler发送到UI线程进行UI操作。那么Handler的实现原理是什么呢。

2016-01-29 17:08:37 961

原创 Handler.post执行时所在线程分析

问题描述:Android中Handler.post可以用来修改UI布局,handler.post(Runnable r)方法是将Runnable对象发送到主线程中执行,并且源码注释如下* Causes the Runnable r to be added to the message queue.* The runnable will be run on the thread to which this handler is * attached. 注释的意思是runnable会在handle

2016-01-29 16:35:48 4989

原创 适配器模式在Android中的应用

通过Android中常用到的适配器模式来分析适配器模式的用法

2016-01-09 16:19:13 2222

原创 Drawable分类

android中的drawable一般用于设置View的背景,我们常用xml定义的drawable的有ShapeDrawable,StateListDrawable,下面我们介绍一下android中的drawable,这对我们自定义颜色图片和复用图片非常有用BitmapDrawablexml标签为bitmap用于设置图片属性,开发中一般不常用可以设置图片的位置gravi

2016-01-03 22:05:42 690

原创 Android View的事件分发机制

1 案例描述我们在开发中经常会遇到滑动冲突和点击冲突的情况,比如ScrollView和ListView的滑动冲突,listView中button点击事件和ListView本身的点击事件冲突等,这些问题都是开发中会经常遇到的,处理起来也比较棘手,下面我们来详细的分析View的事件分发机制,从原理上弄清楚到底是什么导致了冲突事件的发生。2 案例分析2.1 冲突事件重现比

2016-01-03 16:42:24 1269

原创 通过Observer(观察者模式)来看Android的MVC

android中运用最多的observer模式就是listener的使用比如一个activity中点击button响应onClick事件View就是一个被观察者(observable)这个View里面一定有一个onClickListener观察者,activity中调用的view.setOnClickListener(this)就是对监听器观察者的初始化,将观察者添加到被观察者中。

2016-01-02 23:00:38 1054

原创 工厂方法模式(factory method)

试想一下这样的场景,假如代码中用new创建一个类创建了20次,也就是说new了20次,突然有一天发现这个类的构造方法需要改变,里面需要新加一个参数,这个时候,就需要去找到这20个new的地方,然后分别更改,工厂模式就能解决这个问题。只需要更改factory中的创建方法就可以同时修改任意地方创建出的类。这只是一种场景,另一种场景,假如我们new一个对象的时候需要进行一些判断,比如

2016-01-02 21:36:38 509

原创 2015年总结

今天是2015年的倒数第二天了。到上海已经快两年了,2014年的三月份到上海,然后开始了自己在上海的征程,为什么说是征程,因为我觉得我一直在突破自己,挑战自己,这个过程更多有的是对自己和对生活不服输的心态。到今天我想我还远远没有沾到成功的边,剩下的奋斗必须留到2016年继续完成,所以今天写下一点对自己过去的总结和对2016年的展望。        回想今年,可以用两段时间来概括,第一段时间是等

2015-12-31 00:23:02 446

原创 浅析Java中CountDownLatch用法

1、CountDownLatch是什么CountDownLatch可以控制线程的执行,他可以让所有持有他的多个线程同时执行,也可以控制单个线程执行。他初始化的时候会传出一个int类型的参数i,调用一次countDown()方法后i的值会减1。在一个线程中如果调用了await()方法,这个线程就会进入到等待的状态,当参数i为0的时候这个线程才继续执行。2、一个简单的跑步比

2015-10-27 10:20:24 7637 6

原创 JNI和NDK

JNI简称JAVA Native Interfacendk简称Native Development Kit本地开发工具包jni的作用由于android的应用层都是用java写的,这些java类编译为DEX类型的bytecode后,必须靠Dalvik虚拟机(VM: Virtual Machine)来执行,在执行java类的过程中,如果需要和C组件进行沟通,VM就会载入C组件,

2015-08-01 14:21:57 415

原创 java中的集合知识杂记

Collection中有三个主要的接口:list,set,maplist是一种知道索引位置的集合,可以有多个元素引用相同的对象set注重独一无二的性质,不允许有重复的元素。所谓的重复的元素,hashset会对存入得对象进行对比,先比较他们的hashcode是不是相同的,若hashcode是相同的,就会用equals比较这个对象是不是完全相同,只有当hashcode和元素都相

2015-05-08 15:20:12 502

原创 android中webView和html中js的交互

现在hybrid app比较火,使用起来也比较方便。android中通过webView加载显示url,通常会遇到一些问题,比如android和网页界面的交互。比如定位的功能,需要手机提供给js一个经纬度。下面有一个简单交互的例子public class MainActivity extends Activity {private WebView webview;

2015-05-05 16:33:11 745

原创 java堆和栈

先了解几个概念堆heap:对象生存的空间栈stack:方法调用及变量的生存空间Java的堆是一个运转时数据区,类的对象从中分配空间。这些对象经过new、newarray、anewarray和 multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以静态地分配内存大小,生活期也不用事 先通知编译器,

2015-05-04 15:51:05 513

原创 程序退到后台在返回,application中的缓存数据被回收,导致程序异常

      Application中可以缓存一些数据,当做全局变量使用,但是当程序退到后台,手机内存不足时,或者用手机加速软件加速,这些数据就会被回收,当再次进入程序的时候,就会出现空指针异常。程序强制退出。       解决方案。    一、可以用到数据持久化技术,将缓存的数据持久化到设备中,可以用SharePreference和sqlite数据库将数据保存,当被回收的时候再

2015-04-28 13:43:41 2844 1

原创 android Service重启问题,结合AlarmManager实现定时任务

当启动service进行后台任务的时候,我们一般的 做法是启动一个线程,然后通过sleep方法来控制进行定时的任务,如轮询操作,消息推送。这种service的资源是很容易被回收的,虽然service的优先级很高,但是还没有前台的activity的优先极高,所以一旦资源被回收,service会停止运行。        service被回收是我们不能控制的,但是我们可以控制

2015-04-28 13:29:48 8827

原创 Activity的启动模式详解

Activity的启动模式对你来说应该是个全新的概念, 在实际项目中我们应该根据特定的需求为每个活动指定恰当的启动模式。启动模式一共有四种,分别是 standard、singleTop、singleTask 和 singleInstance, 可 以 在 AndroidManifest.xml 中 通 过 给标 签 指定android:launchMode属性来选择启动模式

2015-04-28 13:20:41 526

原创 用HttpPost登陆验证时,用户名和密码放在请求头部header中的处理方法,形式为Authorization: username password。

post.setHeader("Authorization", "your token");这里主要是要

2014-11-17 15:57:31 96807 4

原创 activity中滑动手势和listview滑动冲突解决方法

问题描述:      在activity中实现了一个手势检测器detector,用OnGestureListener能检测到手势滑动,重写onFling()方法判断到从左向右滑动后就finish()这个activity,activity中重写的onTouchEvent方法,用手势检测器detector处理滑动事件,若这个滑动event符合你重写的滑动条件,就执行finish。但是act

2014-11-14 11:26:14 2726

原创 SwipeListView:listview的侧滑功能

listview的侧滑功能,需要集成第三方的自定义控件Swo

2014-11-04 16:44:19 944

转载 Android中自定义checkbox样式

1.首先在drawable文件夹中添加drawable文件checkbox_style.xml。[html] view plaincopyprint?xml version="1.0" encoding="utf-8"?>  selector xmlns:android="http://schemas.android.com/apk/res/android"

2014-09-20 10:35:45 701

原创 mysql的group by、order by和having、where比较

首先来探讨group by和order by

2014-08-14 15:10:09 1547 2

原创 LinearLayout中layout_gravity控制控件位置

无数次在linearlayout中利用layout_gravity拖动控件的时候,它都不听使唤。一直也不知道是什么原因,其实什么原理机制我不是很有兴趣了解,我只是很想知道到底要怎么做才能让layout_gravity自由摆放我的控件。下面是我常遇到的情况,horizontal的三个texiview,我分别用layout_gravity让他们左中右显示,但是很明显他们不受layo

2014-08-08 11:30:17 6774 1

原创 java向mysql存入xml文件

当数据库字段为blob类型时 ,我们如果使用PreparedStatement中的setBinaryStream(int,InputStream,int)方法需要注意在向blob字段类型中插入数据时,要使用javaio的inputstream,读入文件。而相反从blob字段中读出数据时,同样使用javaio的inputstream,再用javaio的outputstream写入文件

2014-07-22 15:51:28 1329

原创 java连接mysql数据库

Java连接mysql数据库步骤如下

2014-07-22 00:11:26 1346 2

原创 textview添加selector实现button的点击效果

一个TextView中若要实现selecotr背景选择,必须加上3条1、android:clickable="true"2、android:focusable="true"3、android:focusableInTouchMode="true"获得焦点这样的话点击后焦点会一直在这里,直到点击其他的textview。但是这样的话用点击事件的监听会出现麻烦,必须点击2次才会执行o

2014-07-17 19:45:01 1182

仿微信朋友圈图片查看

高仿微信朋友圈图片查看浏览效果 public class HackyViewPager extends ViewPager { private static final String TAG = "HackyViewPager"; public HackyViewPager(Context context) { super(context); } public HackyViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { try { return super.onInterceptTouchEvent(ev); } catch (IllegalArgumentException e) { // 不理会 Log.e(TAG, "hacky viewpager error1"); return false; } catch (ArrayIndexOutOfBoundsException e) { // 不理会 Log.e(TAG, "hacky viewpager error2"); return false; } } }

2015-04-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除