自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

海纳百川Android的博客

一个Android程序员的经验分享

原创 java.lang.SecurityException: Not allowed to change Do Not Disturb state

Not allowed to change Do Not Disturb state at android.os.Parcel.readException(Parcel.java:2013) at android.os.Parcel.readException(Parcel.jav...

2020-05-16 22:34:44 26 0

原创 判断链表中是否存在环的方法及证明

一、判断链表中是否存在环的方法及证明 首先说明一点就是如果链中存在环,可能整个链是一个环,也可能是该链表的后面一部分形成了环。如何判断链表中是否存在环,经典的判断方法就是利用两个指向链表头节点的指针,同时移动,两个指针每次移动的节点数是不一样的,如果存在环,那么这两个指针随着移动次数的增加,肯定...

2020-04-24 15:14:32 531 0

原创 Andorid Parcelable序列化遇见List、数组、Map如何处理

Andorid Parcelable序列化遇见List、数组、Map如何处理 安卓开发中,如果遇见需要序列化的场景,我们一般都会把我们的Bean类实现Parcelable接口,如下: import android.os.Parcel; import android.os.Parcelable...

2019-12-15 23:27:08 383 0

原创 SparseArray源码解读

SparseArray源码解读 google推荐使用SparseArray来代替HashMap,可见SparseArray应该有其优点,至于是什么优点,我们先来看看源码,就比较清楚了。 一、构造方法 SparseArray有两个构造方法,一个无参构造方法和一个有参构造方法,无参构造方法本质上...

2019-11-24 17:34:54 121 0

转载 Android使用https

HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。 为了解决HTTP协议的...

2019-09-27 13:37:53 235 0

原创 解决default activity not found办法大全

最近在项目中遇到一个问题,就是以前用android studio能正常打开的工程,今天突然报default activity not found错误,该错误导致app那块显示一个红叉,无法直接launch app,可以build工程产生apk文件,但是不能用studio直接launch app,这...

2019-08-26 14:08:37 12851 1

原创 Java 数学三角函数正弦、余弦、正切以及反正弦、反余弦、反正切函数的使用

Java 数学三角函数正弦、余弦、正切以及反正弦、反余弦、反正切函数的使用 Java中数据三角函数在Math类里面有封装好的对应方法,正弦函数是sin方法,余弦函数是cos方法,正切函数是tan方法,反正弦函数是asin方法,反余弦函数是acos方法,反正切函数是atan方法。(注意,Math类...

2019-07-16 17:47:18 972 0

转载 Java浅拷贝和深拷贝

Java浅拷贝和深拷贝 一看就懂的,java深拷贝浅拷贝 将一个对象的引用复制给另外一个对象,一共有三种方式。第一种方式是直接赋值,第二种方式是浅拷贝,第三种是深拷贝。所以大家知道了哈,这三种概念实际上都是为了拷贝对象啊。 1、直接赋值 好,下面我们先看第一种方式,直接赋值。在...

2019-07-10 19:57:58 199 0

原创 adb shell查看进程方法

adb shell查看进程方法 android开发过程中,有时候我们需要知道某个应用的进程号,下面介绍两种方法,都是要用到adb shell命令。 第一种:adb shell ps 该命令比较简单粗暴,会列出手机中的所有进程的信息,如下图所示: 我们只要在NAME那一列找到我们的app...

2019-04-17 17:10:18 7421 4

原创 android NSD service使用介绍

android NSD service使用介绍 最近项目中要实现局域网设备发现,接触到了MDNS协议,什么是MDNS协议呢,下面摘抄自百度百科。 mDNS即组播DNS(multicast DNS)。使用5353端口,在内网没有DNS服务器时,就会出现此组播信息。 在一个没有常规DNS服务器的...

2019-04-14 13:43:22 511 2

原创 HashMap.entrySet( )分析

我们在写代码的时候经常会用到HashMap这个方法的entrySet()方法,这个方法返回返回的是一个Set对象,很多人以为返回的是一个包含了Map里面所有键值对的一个集合对象,这个理解不准确,怎么说呢,通过这个Set对象,我们确实可以获取到Map里面存放的所有键值对,但是这个集合对象本身是不存放...

2019-03-10 16:01:40 1475 0

转载 AndroidStudio添加依赖的方式介绍

AndroidStudio添加依赖的方式介绍 本文转载自https://www.jianshu.com/p/52b192f3ce1c android-apt APT(Annotation Processing Tool),注释处理工具,对源代码文件进行检测,根据注解自动生成代码。并编...

2018-12-12 09:51:39 377 0

原创 android为广播加上FLAG_EXCLUDE_STOPPED_PACKAGES

自android3.1之后,android就为广播增加了两个标志FLAG_EXCLUDE_STOPPED_PACKAGES和FLAG_INCLUDE_STOPPED_PACKAGES。android系统默认为我们的广播加上了FLAG_EXCLUDE_STOPPED_PACKAGES标志,我们从源码...

2018-09-08 19:42:29 545 0

原创 android系统广播有哪些

android系统广播有哪些呢,本文做一个整理。 Intent类里面有系统广播的名称的定义,系统广播都会有下面这样的注释 * This is a protected intent that can only be sent by the system. 有这样注释的广播的定义一共有52个,如...

2018-09-08 13:19:00 1458 0

原创 斐波那契数列两种算法的时间复杂度

斐波那契数列简介: 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列...

2018-09-07 09:49:13 3581 0

原创 子线程能弹Toast吗

子线程能弹Toast吗? 相信很多安卓开发者都坚信一个信念,那就是子线程不能更新UI,不能进行UI操作,写此文之前,我自己也是这么坚信的,直到我注意到一个异常,才引发我对子线程不能更新UI有了新的认识。这个异常是在我在子线程里面不小心弹了一个Toast引发的,该异常相信很多朋友都见过,就是 j...

2018-08-20 13:43:47 4717 2

原创 安卓Toast显示流程分析

我们在开发apk的过程中,经常会用到Toast,它的确很方便,不用开发者编写UI布局,只需要传入字符串就能给用户提示,那么它的显示与消失的流程是怎样的呢,本来就来讲一讲这个流程(所用源码为android 8.0版本)。 1、首先我们来看一下Toast的弹出的写法: Toast.makeTex...

2018-08-19 17:52:29 2239 1

原创 SystemServer类解析

SystemServer类解析 安卓系统有一个system_server进程,该进程由zygote进程创建,负责运行所有的系统服务,该进程的入口类是frameworks/base/services/java/com/android/server/SystemServer.java。下面来解析一下...

2018-08-13 14:11:47 380 0

原创 getSystemService追根溯源

getSystemService追根溯源   在安卓开发过程中,我们经常会用到getSystemService方法来获取各种系统服务,比如下面几种常见的获取服务代码: NetworkInfo networkInfo = ((ConnectivityManager) context.getS...

2018-08-12 03:26:06 2534 1

原创 Service的onStartCommand几种返回值的用法

Android开发者都知道Service的onStartCommand方法,其返回值会决定Service的不同特性,比如Service被杀死后能否可以自动重启。本文详细说一下各返回值的作用。安卓源码里面给出了四种返回值,分别是START_STICKY、START_NOT_STICKY、STRAT_...

2018-08-06 15:24:23 1014 0

原创 android如何正确获取iccid,特别是中间带有字母的iccid

android如何正确获取iccid,特别是中间带有字母的iccid 在android设备上面获取sim卡的iccid,相信很多开发者都能很容易做到,网上也有大量的获取方法,99%的写法都和下面一样 TelephonyManager tm = (TelephonyManager) con...

2018-07-11 18:25:02 11485 6

原创 Android 共享元素动画

Andriod 5.0之后,包括5.0,开始支持共享元素动画,该动画主要用于两个activity之间,两个Activity共享某些控件,Activity A跳转到Activity B的时候,A的某个控件能自动移动到B的相应控件的位置,产生动画。该动画看起来很高大上,而且实现方法非常简单,是我目前见...

2018-07-08 19:33:52 5321 0

原创 Handler消息机制的源码深度分析

说起Handler机制,难免会提到四大类Handler、MessageQueue、Message、Looper.我们不从代码说起,而是从我们的习惯用法说起,在我们使用Handler的时候,普遍用法如下:Handler myHandler = new Handler(){ @Override...

2018-07-06 11:26:34 513 0

原创 安卓TextView、Button点击效果背景变化实现

android控件点击效果实现android UI开发中最经常用到的就是各种控件的点击事件,比如TextView和Button,点击时背景色有个变化提醒用户触发了点击事件,当用户手指抬起时,背景色又恢复正常,这种效果配置方法很简单,两步即可。第一步 编写一个XML文件该文件位于drawable文件...

2018-06-20 16:28:59 6544 1

原创 蓝牙通信工作流程讲解

最近项目上需要蓝牙通讯功能,所以自己私下里学习了一下蓝牙通讯相关的知识。一直以为蓝牙通讯是调用系统层的API实现的,比如我们平时用的利用蓝牙传照片和文件,我们只需要选择一下接受设备就可以了,但是自己实现蓝牙远程通信之后,才明白其中的一些细节问题,有些流程还是需要我们自己去做的。 1、首先是蓝牙通...

2018-06-19 14:35:45 9223 1

原创 Activity获取控件宽高的最佳时机和方法

Activity获取控件宽高的最佳时机和方法 我们在做android UI方面开发的时候,获取某一个控件宽高是不可避免的事情,获取view的宽高android提供有现成的方法View.getWidth()和View.getHeight(),但是如果获取时机不对,我们获取到的宽高值会为0.那么什么时...

2018-06-06 15:51:28 2120 0

原创 java静态分配的理解

最近觉得自己的java基础知识有些忘了,所以闲暇时间巩固一下,看到了Java的静态多分配的概念,竟有些陌生了(个人觉得Java往往有很多高大上的概念,其实都是我们在实际应用中用到过的,但是说到这些概念我们就会无知感爆棚,有木有同感,面试的时候很多都是问概念的,虽然平时会用但是不懂这些概念的话会很吃...

2018-05-30 14:21:10 1002 0

原创 如何设置compileSdkVersion, minSdkVersion, and targetSdkVersion

最近看到了一片国外的资料,google开发工程师贡献的一片如何设置compileSdkVersion, minSdkVersion, and targetSdkVersion,讲的很官方很正解,收藏一下。Dependingon the time of the year, it might only...

2018-05-26 14:55:59 1764 0

原创 Android 3.1增加FLAG_EXCLUDE_STOPPED_PACKAGES和FLAG_INCLUDE_STOPPED_PACKAGES机制

Android3.1增加FLAG_EXCLUDE_STOPPED_PACKAGES和FLAG_INCLUDE_STOPPED_PACKAGES机制 自Android3.1之后,google在Android里面为广播增加了两个flag:FLAG_EXCLUDE_STOPPED_PACKAGES和F...

2018-05-24 15:13:27 1510 5

原创 Android手势与触摸事件的分发和消费机制

Android手势与触摸事件的分发和消费机制 在Android 客户端开发过程中,经常会遇到手势事件的处理,本篇博文讲一下本人对touch事件处理机制的一些理解,希望对一些同志们有所帮助。 我们知道Android的视图是树形结构,如下图所示为例:   由于PhoneWindow和Dec...

2018-05-12 20:10:30 1287 1

原创 Java中除数能否为0

在数学运算中运算除法的时候,相信大家心里都会绷起一根弦(至少会有这样的潜意识):除数不能为0。能这么想的程序员相信都是非常注重代码健壮性的,这是个好习惯,但是除数是不是一定不能是0呢?在做整型除法的时候,除数是不能为0的,否则会报异常。如下面这句代码:int d = 2/0;执行的时候会报java...

2018-04-23 14:37:17 3646 0

原创 URLConnection POST方式传参总结

URLConnection POST方式传参总结 HTTP Post方法用于向服务器提交数据,写法比Get方法稍微复杂那么一点,这里总结一下Post方式传参的几种方法1、  一个或者多个参数,以form形式提交,提交形式如“name=zhangsan&password=123456...

2018-03-30 15:45:38 4351 2

原创 Android移动数据开关开启关闭方法

本文奉上一个Android移动数据开关开启关闭方法,闲话少说,直接上代码。   public static void setDataEnabled(int slotIdx, boolean enable,Context context) throws Exception { try ...

2018-03-23 10:43:29 12128 6

原创 Android开发一个持久运行的app的一些经验

最近由于项目的需要,需要开发一个监控性质app,功能很简单,就是定时调用服务器的一些接口,如果返回失败就要向相关人员发出警报。需求很简单,重点有两个1、  一直运行,这需要app没有内存泄漏,否则一直运行的话,肯定会因为系统内存不足而造成程序崩溃的。内存泄漏的现象在app运行的时候倒是没有发生,或...

2018-03-22 18:27:58 957 0

原创 三大运营商网络制式

三大运营商的网络模式为:1、中国移动移动4G:移动TD-LTE;移动3G:TD-SCDMA;移动2G:GSM。2、中国联通联通4G:联通TD-LTE,联通FDD-LTE,或者说是FDD-LTE与TD-LTE融合; 联通3G:WCDMA;联通2G:GSM。3、中国电信电信4G:电信TD-LTE,电信...

2018-03-22 16:11:09 6287 0

转载 LinearLayout 添加分割线 divider的简单方法

如何在LinearLayout中添加分割线,就像下面这张图一样。   推荐方法: LinearLayout有两个属性 1、android:divider="@drawable" drawable可以是图片文件,也可以是xml绘制的shape。 使用shape的时候...

2018-01-25 11:33:16 1310 0

原创 Android获取文件目录

在Android开发过程中,难免会遇到需要文件操作,这些文件可以存放在data分区下面,也可以存放在外置sd,这些路径都是什么呢,今天在这里做一个简单的总结。 我一共用了8个系统API,代码如下: tv.setText("getExternalCacheDir().getAbso...

2018-01-22 13:41:08 2483 0

原创 Android组件化经验分享

Android组件化经验分享 最近由于项目需求,app A需要使用另一个app B的全部功能,即B要作为A的一个模块集成到A里面去。App B可以被打成aar包,已sdk的形式被app A使用,但是这就要对appB的结构进行修改,而且集成后aar包有问题的话修改也比较麻烦。所以这里使用了一个An...

2018-01-07 23:26:49 666 0

转载 八大排序算法

本文转载自:http://blog.csdn.net/hguisu/article/details/7776068 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八...

2017-12-25 22:48:07 580 0

原创 LeakCanary使用经验小结

LeakCanary使用经验小结   LeakCanary是Android查找内存泄漏的主要工具,由Square公司开发,可以直接在手机端查看内存泄露的工具。其使用方法如下: 1、  导入依赖包 debugCompile'com.squareup.leakcanary:leakcanar...

2017-12-19 20:13:29 3758 2

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