10 Alexlee1986

尚未进行身份认证

暂无相关描述

等级
博文 30
排名 13w+

Android开发之获取Mac地址的兼容方法

  随着Android的版本迭代,获取设备信息的方法也可能发生改变,在android6生效的方法,在android8可能已经不生效了。诸如此类,获取Mac地址的方法也发生了变化。这里找到了最新的适配方案(适配当前的最新版本Android9.0),并且记录了整个适配的修复过程,以供参考。一、Android6.0之前,获得Mac地址的通用方式1、必须的权限<uses-permi...

2019-07-03 17:52:06

Android深入研究之View的可见性检测

一、背景  在Android开发中,我们常常会对View的可见性visiblity进行操作或者检查。常见的场景有:在消息流中,根据ImageView是否在屏幕中出现了再决定是否加载;在视频流页面,当视频滑入屏幕被用户可见时播放,滑出屏幕就自动停止播放等等;网络请求数据,根据返回的数据结果控制相应View可见或不可见;需要根据view是否可见或第一次可见,做特殊的处理,如埋点上报等操作。...

2019-06-14 10:11:48

Android进阶学习之 EventBus 3.X.X使用总结

EventBus简介  EventBus是Android发布/订阅事件总线,可简化Activities,Fragments,Threads,Services等组件间的消息传递。  优势:可替代Intent,Handler,BroadCast,接口等传统方案,更快,代码更小,50K左右的jar包,代码更优雅,彻底解耦。github地址:https://github...

2019-04-12 15:53:27

Android基础开发之启动其他应用的方式总结

Android开发经常会遇到在一个应用中启动另一个应用的情况,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用、一个应用为其他应用导量等。在Android中一个应用启动其他应用主要由以下三种启动方式:方式一:通过包名和页面名称,直接打开应用的指定页面Intentintent=newIntent(Intent.ACTION_MAIN);intent.a...

2019-04-01 19:33:49

Android Sdcard文件操作之读、写、增、删(Kotlin实现)

AndroidSdcard文件操作之读、写、增、删(Kotlin实现)  在AndroidManifest.xml中加入访问SDCard的权限如下:<!--在SDCard中创建与删除文件权限--><uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><!...

2019-01-11 18:09:09

Kotlin开发利器之协程

Kotlin开发利器之协程协程的定义  协程的开发人员RomanElizarov是这样描述协程的:协程就像非常轻量级的线程。线程是由系统调度的,线程切换或线程阻塞的开销都比较大。而协程依赖于线程,但是协程挂起时不需要阻塞线程,几乎是无代价的,协程是由开发者控制的。所以协程也像用户态的线程,非常轻量级,一个线程中可以创建任意个协程。项目中引入Kotlin的协程  添加依赖:corout...

2018-12-30 10:26:46

Android N及以上版本应用安装包下载完成自动弹出安装界面的适配方法

应用安装包下载完弹出安装界面适配AndroidN及以上版本遇到文件及解决方法  在实现下载和安装APP功能的时候在Android较高版本可能会遇到如下的问题:安装Apk时报错:android.os.FileUriExposedException:file:///storage/emulated/0/Download/*.apkexposedbeyondappthroughInt...

2018-12-07 16:50:30

Android深入学习之各种隐私权限判断和获取方法总结

Android深入学习之各种隐私权限判断和获取方法总结  从AndroidSDK23开始,Android就改变了权限的管理模式。对于一些涉及用户隐私的权限则需要用户的授权才可以使用。在此之前,开发者只需要在AndroidManifest.xml中注册,如网络权限、wifi权限等等:权限即可,但是现在除了注册还需要进行手动的授权。  没有涉及用户隐私的权限申请的方式比较简单,即只需要在A...

2018-10-14 16:58:51

Kotlin开发Android项目之静态方法、静态变量使用示例

Kotlin开发Android项目之静态方法、静态变量使用示例1.Kotlin定义一个都是静态方法的类  Kotlin定义一个都是静态方法的类,比如项目中比较常见的工具类,只需要将类class换为object即可,下面是Java写法和Kotlin写法的对比:Java写法:publicclassStaticClass{publicstaticintsum(intnum...

2018-10-07 11:25:16

Android深入学习之requestLayout、invalidate和postInvalidate的区别

     Android开发离不开界面的重绘和更新,尤其是自定义控件更是经常遇到重绘更新界面的场景,下面具体介绍一下重绘界面几个方法的区别:    (1)、requestLayout:当view确定自身已经不再适合现有的区域时,该view本身调用requestLayout这个方法要求parentview重新调用它的onMeasure、onLayout来重新计算view大小以及...

2018-09-17 15:32:01

Android 多线程编程之 HandlerThread 详解

  HandlerThread有那些特点:HandlerThread本质上是一个线程类,它继承了Thread; HandlerThread有自己的内部Looper对象,可以进行looper循环; 通过获取HandlerThread的looper对象传递给Handler对象,可以在handleMessage方法中执行异步任务; 创建HandlerThread后必须先调用HandlerT...

2018-08-09 09:51:11

Java基础学习之接口和抽象类的概念、区别及适用的场景

1.接口  接口是抽象方法的集合,一个接口只有方法的形状而没有方法的具体实现,接口是Java面向对象提供的一种机制。  Java语言是一种单继承的,在类的继承中通过实现多个接口间接实现了多继承功能。接口的声明:[public]interfaceInterfaceName{voidmethod1(intarg1);voidmethod2();......

2018-07-29 09:25:15

Java基础学习之线程同步方法总结

    引入线程同步的原因:当有多个线程要同时访问一个变量或对象时,如果这些线程中既有读又有写操作时,就会导致变量值或对象的状态出现混乱,从而导致程序异常,用户也得不到想要的结果。比如,如果一个银行账户同时被两个线程操作,一个取100块,一个存钱100块。假设账户原本有0块,如果取钱线程和存钱线程同时发生,会出现什么结果呢?取钱不成功,账户余额是100;取钱成功了,账户余额是0。那到底是哪...

2018-07-29 09:16:14

Java基础知识之synchronized同步方法、代码块、静态方法、静态代码块的区别

   Java中的同步块用synchronized标记,是同步在某个对象上,所有同步在一个对象上的同步块在同一时刻只能被一个线程进入并执行操作,其他等待进入该同步块的线程将被阻塞,直到执行该同步块中的线程退出。有四种不同的同步块:实例方法同步; 静态方法同步; 实例方法中的同步块; 静态方法中的同步块。1.实例方法同步  Java实例方法同步是同步在拥有该方法的对象上。这样...

2018-07-26 14:34:48

Android高级开发工程师技术面试经验总结

     笔者前段时间参加了绿厂的Android高级开发工程师技术面试,总结一下,希望对即将参加技术面试的程序员能有所帮助。    首先面试官问的是项目相关的问题,如项目的实现、项目中遇到的问题以及遇到的问题是如何解决的,同时针对项目中的某些技术点进行不断的追问。    在问完项目相关的问题之后,面试官开始问Android基础知识相关的问题,具体问到了以下这些问题:...

2018-07-21 12:08:48

Java基础知识之String、StringBuilder和StringBuffer三者的区别

String、StringBuilder和StringBuffer这三个类在操作字符串时主要有运行速度和线程安全这两方面的区别:1.运行速度  运行速度,即执行字符串操作时代码执行的时间快慢,在这方面运行速度快慢为:StringBuilder>StringBuffer>String。  String最慢的原因:String为字符串常量,而StringBuilder和S...

2018-07-21 11:26:01

Android网络编程之socket和http编程的区别

HTTP为短连接    Http协议是建立在TCP协议之上的一种应用。它与TCP连接不同之处在于,客户端每次请求都需要服务器返回响应,在请求结束后,会主动释放连接,从建立连接到关闭连接的过程称为“一次连接”。由于HTTP每次请求都会释放连接,因为HTTP连接是一种“短连接”,所以要保持客户端在线状态,就必须不停地向服务器发起连接请求。所以在开发过程中,即使不需要获得任何数据,客户端也要...

2018-07-19 15:43:13

Android基础学习之进程间和线程间通信方式总结

    首先介绍一下进程和线程的基本概念及两者之间的区别:  进程:是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。  线程:是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一些在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其...

2018-07-18 14:38:14

HashMap和HashTable区别及Hash冲突解决方法

一、HashMap和HashTable主要有以下5个方面的区别:1.继承的父类不同  Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。2.对null对象的支持不同  HashMap是支持null键和null值的,而HashTable在遇到null时,会抛出NullPointerException异常。这并不是...

2018-07-17 14:28:06

HTTP与HTTPS的基本概念及其区别

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

2018-07-14 11:56:27
奖章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。