自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中Int、Integer、new Integer()之间的区别

Java中有八种基本数据类型,Int是其中之一。而Integer是Int的封装,即Integer其实是一个对象。可以通过new来创建一个Integer对象,也可以直接将Int值赋给Integer变量。它们之间的区别如下:一:IntInt是Java八种基本数据类型之一,一般大小为4字节32位,取值范围为2^-31—2^31。两个Int类型变量用“==”比较的是内容的大小。例如:int a...

2019-08-26 16:15:49 10153 4

原创 Android中进程的五个优先级介绍

一个进程的优先级跟它所包含的组件的状态相关。一:前台进程前台进程只要满足以下条件之一:(1)该进程有一个Activity正在跟用户交互,即该Activity实例处于活动栈顶。(2)该进程有一个BroadcastReceiver,并且正在调用它的onReceive()方法。(3)该进程有一个Service,该Service是一个前台服务。(4)该进程有一个Service,该S...

2019-08-26 14:54:16 1167

原创 Android性能优化方向和相关工具

开发一款性能优良的应用是每一个Android开发者都必须经历的挑战。在移动端资源有限的前提下,提高应用的性能显得尤为重要。常见的提高APP性能的优化方向有三个:布局和渲染优化、内存优化、功耗优化。一:布局优化所谓布局优化,就是尽量减少布局的嵌套层级,减少无用的布局。主要的优化方法有:(1)优先使用RelativeLayout来减少布局嵌套层数,否则尽量使用LinearLayout...

2019-08-25 22:20:43 477 1

原创 Android中Service的onStartCommand()方法返回值和参数含义

当通过startService(intent)方法启动一个Service时,会调用Service的onStartCommand()方法。该方法有3个参数:intent、flags、startId。有4个返回值:START_STICKY、START_NOT_STICKY、START_REDELIVER_INTENT、START_STICKY_COMPATIBILITY。一 返回值含义1...

2019-08-25 13:43:32 2267

原创 Java关于Try-Catch-Finally的执行顺序和Return值问题总结

一:执行顺序问题1.当三个代码块都有代码时:(1)首先执行Try代码块,如果Try代码块顺利执行,就直接执行Finally代码块。(2)首先执行Try代码块,如果Try代码块发生异常,就会执行Catch代码块,最后执行Finally代码块。2.当只有Try和Finally代码块时:(1)首先执行Try代码块,如果Try代码块顺利执行,就直接执行Finally代码块。...

2019-08-23 22:49:03 337

原创 Android事件分发机制流程解析

一:什么是事件分发所谓事件分发,就是将一次完整的点击所包含的点击事件传递到某个具体的View或ViewGroup,让该View或该ViewGroup处理它(消费它)。分发是从上往下依次传递的,其中可能经过的对象有最上层Activity,中间层ViewGroup,最下层View。例如在屏幕中有一个Button控件,点击它时该次点击事件就会从Activity传到Button所在的ViewGroup...

2019-08-23 19:47:58 2806 2

原创 Android之View的绘制流程解析

一:绘制大致流程一个APP由许多Activity组成,每个Activity都对应一个界面呈现给用户,而每一个界面都是由各种View和ViewGroup组成,总体结构是一个树形结构,如图所示:在上图中,DecorView是所有视图的根视图,也就是最顶层布局,它是一个ViewGroup。每个Activity的View绘制流程都是先从DecorView的绘制开始,然后依次递归绘制它的子Vie...

2019-08-22 21:12:04 194

原创 Java之Set、List、Map内容整理

一:SetSet接口继承自Collection,存储的数据无序,不可重复。Set有三个常用实现类:HashSet、TreeSet、LinkedHashSet。三个实现类都是线程不安全的。(1) HashSet:一般单纯用来存储无序且无重复的数据。底层基于HashMap,所以底层数据结构是数组+链表,和HashMap一样通过hashcode()、equals()方法保证数据无重复。(2)...

2019-08-18 21:33:53 109

原创 Java中final、finally、finalize的定义和区别

这三兄弟内容上并没有交集,但是因为长的像,所以常常被放在一起比较。。。。一:finalfinal是一个关键字,用来声明类、变量和方法。final具有终止的含义。当用final修饰一个类时,这个类就无法再被继承了,也就是说这个类就到此为止了,它不会再有子类了。当用final修饰一个变量时,那么这个变量就变成了一个常量,不允许再被重新赋值,所以一个final修饰的变量通常在声明时...

2019-08-16 23:21:59 289 1

原创 Java中四种引用:强引用、软引用、弱引用、虚引用

在Java1.2版本以后,引用被分成了四种类型:1.强引用。2.软引用。3.弱引用。4.虚引用。四种引用强度依次减弱。一:强引用具有强引用的对象是必需的对象,比如:Class a = new Class()。这里引用变量a就是一个强引用。当一个对象具有强引用时,垃圾回收器不会去回收它,除非这个对象没有再被引用了。当内存空间不足时,Java虚拟机宁愿抛出OutOfMemoryError...

2019-08-16 22:33:01 198

原创 Java内存中的新生代、老年代、永久代相关内容

注:新生代和老年代都是Java堆中的内存空间,划分方法跟存储对象的生命周期有关。永久代是方法区中的。一:新生代新生代是堆中的一块内存空间,大约占据堆内存的1/3,用来存放新创建的对象,对象生命周期较短。在新生代中进行内存回收时采用的是复制算法(参考GC篇),具体如下:1。新生代中的内存分为三个区:Eden区、SurvivorFrom区、SurvivorTo区,三个区的内存大小比为8:1...

2019-08-16 21:57:57 1227

原创 Java之GC(垃圾收集)相关内容整理

在Java语言中,内存这一块的内容一般是由虚拟机来管理的,开发者无需自己手动操作管理。所以像GC垃圾收集之类的操作都是由虚拟机自动执行的。什么是GC(Garbage Collection)?为什么要进行GC操作?GC收集的垃圾其实就是内存,当某块内存存储的对象不再被使用时,就有必要回收这块内存,否则将会导致内存泄漏(无用资源没有被回收),进而导致内存溢出(内存不够用)。关于GC需要了...

2019-08-16 21:14:16 222

原创 Java设计模式之Builder模式

Builder模式的定义很抽象:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。(不管它,直接看应用)Builder模式在Android开发中的应用:通过创建静态内部类Builder的方式来给外部类初始化赋值,增加代码的可读性。一、例子:假如有一个Person类,代码如下:public class Person{ private ...

2019-08-12 21:31:16 285

原创 Java中静态内部类和非静态内部类的区别

在一个类中定义的类叫内部类,内部类可以为静态内部类(用static关键字修饰),也可以为非静态内部类(普通类)。区别一: 静态内部类可以有静态成员变量和方法,非静态内部类只能有非静态的成员变量和方法。也就是说,在内部类中如果要定义静态成员,则该内部类一定要用static关键字声明为静态的。(跟抽象类类似,如果要在类中定义抽象方法,则该类一定要声明为抽象类)。区别二:...

2019-08-12 20:34:01 1652

原创 Java设计模式之单例模式

单例模式:保证一个类在整个应用中只有一个实例,该类自动创建实例并提供方法供整个系统调用。优缺点:对于需要消耗许多资源的类,只创建一个实例能够有效提高性能。单例类很难扩展,并且职责过重。如何做到单例模式:1.防止外部调用构造函数实例化,所以构造函数声明为Private。2.定义一个静态方法供外部调用实例。3.由类本身进行实例化操作。4.注意线程安全。单例模式的五种常见写法:一、...

2019-08-09 21:39:15 235

原创 Android系统四层体系架构

Android体系架构分为四层:应用层、应用框架层、库层、内核层。(盗用一张图)一、应用层应用层包括手机上的所有APP,无论是系统自带的还是用户开发的。他们都是基于第二层应用框架层开发的。二、应用框架层Android开发人员接触最多的就是框架层,该层提供了各种各样的系统API,开发人员通过使用这些API来构建上一层的各种各样的APP。这些API包括且不限于:Acti...

2019-08-09 20:00:48 17969

原创 java基础之HashMap相关知识点

1.HashMap是一种由数组和链表构成的数据结构,用于存储“key-value对”元素,同时继承了数组的查找优点和链表的修改优点。2.HashMap是非同步的,所以速度很快。并且键和值可以为null。3.HashMap使用put(key,value)方法存储对象到HashMap中,使用get(key)方法从HashMap中获取对象。4.HashMap数据结构具体为:首先是一个定长的数...

2019-06-24 15:26:02 233

原创 Android中px、dpi、dp、sp之间的区别与联系

1.px(pixel):px也叫像素,1px代表屏幕上的一个像素点,通常所说的分辨率480*320表示屏幕竖直方向有480个px,水平方向有320个px。是构成dpi、dp、sp的基础。2.dpi(dots per inch):即屏幕对角线每英寸的像素点个数。假设有一台5寸(手机屏幕对角线长度)手机,高和宽分别为4寸和3寸,手机分辨率为640*480,代表屏幕竖直方向有640个px,水平方向有...

2019-06-19 15:41:11 791

原创 Android中onSaveInstanceState()和onRestoreInstanceState()的关系

onSaveInstanceState():该方法用于保存Activity的临时数据(当Activity正常退出时不会调用)该方法在onStop()之前调用。onRestoreInstanceState():该方法用于在重建被杀死的Activity时恢复onSaveInstanceState()保存的数据(当Activity没有被系统回收而只是变得不可见时不会调用),该方法在onStart()...

2019-05-15 16:43:40 465 1

原创 Android之onSaveInstanceState()和onPause()的区别与联系

onPause():Activity的生命周期中的一个阶段,当Activity退出前台不再和用户进行交互时调用,可以用来保存一些持久化的数据。onSaveInstanceState():帮助Activity保存临时的数据,比如各种UI状态。联系与区别:两个方法都能够保存数据,一般onPause()用于保存持久化数据,比如向数据库写入数据,而onSaveInstanceState()用于保存...

2019-05-15 15:21:55 1069

原创 Android中的Handler注意事项

一:Handler的作用1.实现线程之间的通信:在非UI线程(子线程)中完成耗时操作,在UI线程(主线程)中更新UI操作。2.通过postDelayed(Runnable r,millies m)方法在主线程中发送延迟消息。二:Handler、Looper、Message、MessageQueue1.在一个线程中只能创建一个Looper,一个Looper只能创建一个Messa...

2019-05-10 16:08:40 475

原创 Android之使用DrawerLayout+NavigationView+ToolBar实现抽屉侧滑菜单

一:将DrawerLayout设为根布局<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas....

2019-05-09 15:14:18 452

原创 Android之TabLayout+ViewPager+Fragment实现页面切换

一:添加design依赖使用TabLayout需要添加design依赖:implementation 'com.android.support:design:27.1.1'二:创建Fragment创建三个Fragment:Fragment1、Fragment2、Fragment3,分别导入页面布局fragment1、fragment2、fragment3:public cl...

2019-05-08 21:47:15 1544 1

原创 Android获取手机权限的两种方式

第一种:代码如下:if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED){ Acitvitycompat.requestPermission(MainActivity...

2019-04-29 15:18:44 6260

原创 Android之ViewPager的简单使用

ViewPager主要用于实现左右滑动视图,使用方法同ListView,都需要用到适配器。步骤:1.XML中添加ViewPager控件:<android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" ...

2019-04-25 15:19:47 279

原创 Android网络框架之Volley简单描述

Volley是一款Android系统中的一个网络框架,能够使网络通信更快更简单。除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。一:用法创建一个RequestQueue对象。 创建一个Request对象。 将Request对象添加到R...

2019-04-23 16:01:28 229

原创 Android之使用CoordinatorLayout相关布局实现标题栏的滑动折叠效果

前言:本篇博文不会讲的太过深奥,通过实现一个Demo来讲解相关的知识,对于知识点背后的实现原理并没有去深究,适合初次接触CoordinatorLayout相关布局的读者。一:为什么选择CoordinatorLayout普通的布局,诸如LinearLayout(线性布局),它里面的子布局和子控件之间是没有关联、互不影响的,比如在布局里定义了一个ListView,当滑动ListView的时候并...

2019-04-12 13:48:23 5328 1

原创 Android使用AIDL实现进程间通信

Android系统中每一个进程都有自己的Dalvik VM实例,都有自己的一块独立的内存,都在自己的内存上存储自己的数据,执行着自己的操作,都在自己的那片狭小的空间里过完自己的一生。而AIDL就类似与两个进程之间的桥梁,使得两个进程之间可以进行数据的传输,跨进程通信有多种选择,比如 BroadcastReceiver , Messenger 等,但是 BroadcastReceiver 占用的系统...

2019-04-04 14:31:59 634

原创 Android内存溢出与内存泄漏

内存溢出(Out Of Memory):Android系统中每一个应用程序可以向系统申请一定的内存,当申请的内存不够用的时候,就产生了内存溢出。内存泄漏:当某个对象不再被使用,即不再有变量引用它时,该对象占用的内存就会被系统回收。当某个对象不再被使用,但是在其他对象中仍然有变量引用它时,该对象占用的内存就无法被系统回收,从而导致了内存泄漏。当内存泄漏过多时,可用内存空间会减少,应用程序申请...

2019-04-02 20:34:45 146

原创 Java中隐藏与覆盖(重写)的区别

隐藏与覆盖的前提条件是存在继承,当一个类继承了另一个类时就有可能会出现隐藏和覆盖的情况。类有属性和方法,其中又分为静态属性/方法和实例属性/方法。隐藏:针对属性(静态和实例)和静态方法,当子类中存在和父类同名的属性或者静态方法时,父类的属性或静态方法被子类的属性或静态方法隐藏。覆盖:针对实例方法,当子类中存在和父类相同的实例方法(方法名和参数类型相同,返回值和异常比父类小(返回子类类型...

2019-03-26 16:55:01 1695 1

原创 Java对象类型向上转型和向下转型

基础知识:Java中的继承机制使得一个类可以继承另一个类,继承的类称为子类,被继承的类称为父类。在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象,所以子类可以继承父类中所有的属性和方法,包括private修饰的属性和方法,但是子类只是拥有父类private修饰的属性和方法,却不能直接使用它,也就是无法直接访问到它(子类可以通...

2019-03-20 19:16:43 32498 27

原创 Java中“equals”和“==”的区别

Java中存在一个超类Object,所有其它类都是继承自它。Object类中存在一个equals()方法,该方法的默认功能是比较对象的内存地址是否相同。但在所有的子类中都可以重写该方法,比如String类中重写的equals()方法的作用是比较两个字符串的内容是否相同。1.比较引用类型时“equals”和“==”的区别。“==”:“==”的作用是比较两个引用变量引用的对象内存地址是否相同。...

2019-03-20 13:52:03 180

原创 Android实时监听并获取短信内容的两种方法

通过访问短信内容提供器可以获取手机内已存在的所有短信,但是有时候需要获取的只是刚接收到的第一条短信,比如登录账号时需要手机验证码,这就需要实时监听手机短信。监听手机短信的到来有两种方法:(1)通过广播接收器:当手机收到一条短信时系统会发送一条广播:"android.provider.Telephony.SMS_RECEIVED",通过该广播就能够知道是否有新短信,通过该广播还可以获取到短信...

2019-03-19 11:29:27 32860 6

原创 Android小程序之获取手机内短信

Android系统提供了访问短信内容提供器的内容URI:"content://sms/"; // 所有短信"content://sms/inbox"; // 收件箱"content://sms/sent"; // 已发送"content://sms/draft"; // 草稿"content://sms/outbox"; // 发件箱"content://sms/failed"; ...

2019-03-18 20:58:11 1037

原创 Android小程序之自动发送短信

Android中有一个用于发送短信的类:android.telephony.SmsManager。通过使用该类就能实现自动发送短信的功能。小程序界面如下:在程序中能够输入手机号和短信内容,点击发送按钮即可发送短信。具体步骤如下:1.在AndroidManifest.xml文件中声明发送短信权限:&lt;uses-permission android:name="andr...

2019-03-16 17:09:25 2091

原创 Android广播接收器(BroadcastReceiver)的启动优先级问题

Android中有两个概念:广播(Broadcast)和广播接收器(BroadcastReceiver),Android系统会发送系统广播,应用程序也可以发送自定义广播。同时应用程序可以通过注册广播接收器来接收各种广播。1.广播的分类而无论是系统广播还是自定义广播,都有两种类型:标准广播和有序广播。(1)标准广播(Normalbroadcast):标准广播通过调用sendBroadca...

2019-03-15 15:58:42 3863

原创 Java中Array和ArrayList的基础知识

1.创建并初始化Array:(1):String[] str={"a","b","c"};(2):String[] str=new String[4];(3):String[] str = new String[]{"a","b","c"};ArrayList:ArrayList<String> list = new ArrayList<>();...

2019-03-09 14:21:39 404

原创 Android四大组件之Service的基本用法

1.创建一个服务服务是一个类,我们自己定义的服务都是继承自Service的,假设创建一个MyService类,代码如下:public class MyService extends Service{ public MyService(){ } @Override public IBinder onBind(Intent intent){...

2019-03-07 15:03:46 242

原创 Android多线程及异步消息处理机制详解

1.线程的基本用法创建一个线程一般有3种方法:(1)创建一个类继承自Thread,然后重写父类的run()方法,在方法内编写耗时逻辑,代码如下:class MyThread extends Thread{ @Override public void run(){ //具体逻辑代码 }}启动线程只需要创建MyThread类的实例,然后调用它...

2019-03-07 13:08:02 348

原创 Android使用JSONObject和GSON方法解析JSON格式数据

在网络上传输数据时最常用的两种格式有:XML和JSON。其中JSON格式数据解析有JSONObject,GSON等方法。假设在服务器上存在一个get_data.json文件,文件内容为:[{"id":"5","version":"5.5","name":"clash of clans"},{"id":"6","version&q

2019-03-06 11:20:47 1076

信息安全原理

信息安全方面的文件,主要讲述ARP攻击的原理以及实现过程

2018-04-02

空空如也

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

TA关注的人

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