自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 问答 (1)
  • 收藏
  • 关注

原创 Android中的Binder机制一(实名Binder)

基础概念 在Android中的Binder机制中,主要涉及四部分系统组件,Client、Server、Service Manager、Binder驱动,其中Client、Server、Service Manager运行在用户空间,Binder驱动运行在内核空间。分析 Service Manger注册管理所有的server,并为client提供查询server的功能,servi...

2018-06-28 09:41:57 5524

原创 Java多线程中的生产者和消费者模式

生产者和消费者模式在软件开发过程中,有产生数据的代码模块,有处理数据的代码模块,在生产者和消费者模式中,产生数据的模块就称之为生产者,处理数据的模块就称之为消费者。还有一个存储区连接着生产者和消费者,生产者生产的数据放到存储区中,而消费者取数据也是从存储区中去取,这个存储区是有最大容量限制的,如果存储区中的数据达到了最大容量,那么就要让生产者暂停生产数据,等有容量了在进行生产。如果存储区中没有...

2018-06-23 17:22:27 630

原创 Window、Activity、View的关系

Activity的作用是创建一个窗口Window,不是真正的展示视图和管理View,实际上视图的展示是依附在Window上的,也是Window对View进行真正的管理,View是Window存在的实体。下面具体介绍三者之间的关系:一、WindowWindow表示一个窗口,它是一个抽象类,它的具体实现是PhoneWindow。在应用程序中,对Window的操作是通过WindowManager...

2018-06-19 15:30:13 1528

原创 Activity的启动过程

Android系统启动流程简述Android系统启动的时候,会创建一个init进程,在init进程中会创建出zygote进程。zygote进程启动的时候会创建DVM(Dalvik虚拟机)、SystemServer进程,同时还会创建一个服务端socket,用来等待ActivityManagerService发送的申请zygote进程创建应用程序进程的请求(由此可知,应用程序进程也是通过zygot...

2018-06-15 18:01:33 445

原创 Android中的消息机制三(主线程的消息模型、ANR问题)

主线程的消息处理Android中主线程的程序入口是ActivityThread类的main方法,main方法是一个静态方法,在main方法中会创建ActivityThread的实例对象,会创建主线程的Looper并开启Looper循环,main方法的源码如下: public static void main(String[] args) { ..................

2018-06-14 10:39:53 683

原创 Android中的消息机制二(Handler的工作过程)

上篇文章中介绍了Handler、Looper、ThreadLocal、MessageQueue这四个类,本文结合一个例子分析一下Handler的工作过程,假设有两个线程分别是Thread1和Thread2。Thread1代码:package com.example.lx_rl.handlerdemo;import android.os.Handler;import android...

2018-06-13 09:51:01 476

原创 Android中的消息机制一(Handler、Looper、ThreadLocal、MessageQueue)

每一个线程都对应一个自己的Looper,线程默认是没有Looper的,但是在应用启动的时候ActivityThread会初始化主线程的Looper,所以主线程是有Looper的,默认就可以使用Handler。Handler的作用是将一个任务切换到指定的某个线程中去执行。Handler创建时会使用当前线程的Looper,如果当前线程没有Looper就会报错。 Handler的构造方法: p...

2018-06-12 09:56:13 441

原创 AIDL的使用

AIDL的概念AIDL:全称是Android Interface Definition Language(Android接口定义语言)。它主要用在Android进程间通信中,Android中有一种进程间通信方式是Binder,AIDL就是帮我们自动生成了Binder相关代码,不需要我们自己去手动书写复杂的Binder类,我们只需要在AIDL接口文件中书写自己的调用远程服务的业务方法就可以了,大...

2018-06-11 10:11:55 8947

原创 volatile和synchronized的作用和区别是什么?

java的线程抽象内存模型 java的线程抽象内存模型中定义了每个线程都有一份自己的私有内存,里面存放自己私有的数据,其他线程不能直接访问,而一些共享数据则存在主内存中,供所有线程进行访问。 上图中,如果线程A和线程B要进行通信,就要经过主内存,比如线程B要获取线程A修改后的共享变量的值,要经过下面两步:      (1)、线程A修...

2018-06-09 13:08:05 11070

原创 Tcp三次握手和四次挥手

序列号Sequence Number(seq):第一次发数据包时会随机生成一个。 确认号Acknowledgment Number(ack):它的值是接收到的数据包的序列号加1。 标志位: SYN:同步标志位,它的值为1表示是一个请求建立连接的数据包。 ACK:确认标志位,它的值为1表示确认号是有效的。 FIN:结束标志位,它的值为1表示没有数据...

2018-06-07 10:03:22 301

原创 Android中的线程池

一、为什么要使用线程池     在Android开发中,所有的耗时任务都要放到子线程中去做,如果是自己去手动创建线程,那么就会出现线程数量过多、线程的频繁创建和销毁、线程难以管理等问题,使用线程池的优点可以总结为以下三点: 可以重用线程池中的线程,避免线程的创建和销毁引起的性能开销。可以有效控制线程池的最大并发数,避免大量的线程之间抢占系统资源而造成阻塞的现象。可以对线程进行管理...

2018-05-26 20:47:43 422

原创 springmvc的基本使用

一、springmvc的基本配置和使用       1、导包(springmvc单独使用的包)             2、在src下创建springmvc.xml配置文件3、在web.xml中配置前端控制器   springmvcorg.springframework.web.servlet.DispatcherServletcontextConfig

2017-08-19 18:54:44 3830

原创 mybatis的基本使用

一、mybatis下载、导包、基本使用       1、mybatis下载地址:https://github.com/mybatis/mybatis-3/releases,下载后解压可以获取mybatis需要的jar包     2、导包,需要导入上面项目的lib下的包、mybatis-3.2.7.jar、mysql-connector-java-5.1.8.jar这三部分    

2017-08-07 21:26:30 556

原创 spring的基本使用

最近在学习javaweb中的ssh和ssm框架,今天就整理一下spring的基本用法,一方面是做个笔记整理,以后可以用来复习用,一方面也希望能分享给更多的小伙伴。以后会陆续做其他几个框架的整理,并渐渐的由浅入深的去研究这些框架。一、配置方式使用       1、导包         2、在src目录下添加applicationContext.xml配置文件       3、

2017-07-23 20:04:03 529

原创 Android下的事件分发机制(结合源码分析)

一、事件是由外向内传递的,下面的事件传递流程是A-B-C,A是最外层view,其次是B,最里层的是C,下面从B开始进行分析。   1、action_down事件到达B时,会调用B的dispatchTouchEvent方法,然后会在dispatchTouchEvent内部调用onInterceptTouchEvent方法判断是否要拦截事件。   2、如果onInterceptTouchE

2017-05-07 18:17:11 373

原创 TextView将链接替换为文字,点击文字还是点击链接效果,可以自己处理链接点击事件

TextView将链接替换为文字,点击文字的时候还是点击链接效果代码实现:CharSequence text = textView.getText();String textStr = text.toString();if (text instanceof Spannable) { int end = text.length(); Spannable sp = (Spa

2016-09-07 15:02:39 1157

原创 textView自动缩放字体大小

textView显示的宽度是一定的,如果字数过长就要缩小字体,以满足显示宽度,如果字数少,就要正常显示字体大小,可自定义textView实现,代码如下:public class AutoScaleTextView extends TextView { private static float DEFAULT_MIN_TEXT_SIZE = 0; private static

2016-08-29 19:01:00 5476

原创 TextView换行居中,每行居中显示

textView默认换行是顶到textview的左边的,有时候需求会要求文本中的每行都是居中的,下面的代码可实现:public class CenterTextView extends TextView { private StaticLayout mStaticLayout; private TextPaint mTextPaint; public Center

2016-08-29 18:57:16 7373 1

原创 ExpandableTextView可以展开和收缩的TextView

基本使用:studio中直接引用 compile 'com.ms-square:expandableTextView:0.1.4',然后可以在代码中使用,用法和TextView一样。布局文件:xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android"an

2016-08-29 09:52:24 716

原创 TextView自定义省略号、部分文字变色、部分文字点击

TextView自定义省略号位置,文本中部分文字变颜色,可点击

2016-08-29 09:34:50 2010

原创 Android录制视频,可限制时长,限大小

Android录制视频:public static void recordVideo(Context context, int limit_time, int size) { Intent intent = new Intent(); intent.setAction(MediaStore.ACTION_VIDEO_CAPTURE); intent.putExtra

2016-08-26 11:48:54 7438

原创 Android中VideoView播放视频不能充满屏幕以及视频上的view与视频不同步显示的问题

在做播放视频的时候,发现videoView不能充满整个屏幕,在布局中设置充满父窗体也不行,最后重写onMeasure解决了问题:public class FullScreenVideoView extends VideoView { public FullScreenVideoView(Context context) { super(context);

2016-08-23 08:53:04 7087 2

原创 解决阿里百川推送机型兼容问题

在集成阿里百川推送功能的时候,发现在小米手机和美图手机上测试正常,但是在华为手机上则初始化会失败。原因是百川推送sdk不支持64位JNI库,如果项目中有64位JNI库,碰上走64位的手机,就会出现该问题,解决办法是去除工程中的64位JNI包,走兼容包就可以了。

2016-08-17 14:27:20 1911

原创 解决LikeButton不兼容23以下版本的问题

解决网上实现点赞特效的一个项目,对23以下版本不兼容的问题,原项目链接:https://github.com/jd-alexander/LikeButton

2016-08-17 10:11:58 641

空空如也

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

TA关注的人

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