- 博客(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
原创 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
空空如也
Android studio编译报错
2016-10-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅