![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android学习
文章平均质量分 78
Alexlee1986
这个作者很懒,什么都没留下…
展开
-
Kotlin语言优势总结
Kotlin是JVM和Android的实用编程语言,结合了OO和功能特性,专注于互操作性,安全性,清晰度和工具支持。 作为通用语言,Kotlin可以在Java工作的地方工作:服务器端应用程序,移动应用程序(Android),桌面应用程序。它适用于所有主要的工具和服务。 Kotlin的关键重点之一是混合Java + Kotlin项目的互操作性和无缝支持,使采用更容易,从而减少了样板代码和更多的类型安全性。此外,Kotlin有一个广泛的标准库,使日常任务轻松流畅,同时保持字节码足迹低。当然,也可以在原创 2021-02-21 21:45:07 · 1404 阅读 · 1 评论 -
git 常用指令总结
一 创建分支1.本地分支创建本地dev分支,然后切换到本地dev分支:git checkout -b devgit checkout命令加上-b参数表示创建并切换,相当于以下两条命令:git branch devgit checkout dev用git branch命令查看当前分支:git branch切换分支,如切换回master分支:git checkout mastergit merge命令用于合并指定分支到当前分支,把dev分支的工作内容合并到mast原创 2020-10-18 11:44:57 · 247 阅读 · 0 评论 -
每日一道算法面试题(2):leetcode2两数相加
题目:给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因...原创 2020-02-21 15:45:16 · 249 阅读 · 0 评论 -
每日一道算法面试题(1):leetcode1两数之和
算法在编程领域的重要性不言而喻,而且也是好多大厂面试经常要考核的重点。两数之和题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + n...原创 2020-02-20 16:04:02 · 202 阅读 · 1 评论 -
Android应用/进程保活策略总结
Android 应用/进程保活策略总结1.将Service设置为前台服务思路:启用前台服务,主要是startForeground() 。保活程度:一般情况下不被杀,部分定制ROM会在应用切到后台即杀 ,会被 用户手动杀进程(force stop)杀死。使用场景:大部分音乐播放器通知栏的实现,可以保证后台听歌时应用正常运行。2.在service的onstart方法里返回 STATR_STI...原创 2019-12-30 17:54:04 · 672 阅读 · 0 评论 -
网络编程之 TCP 建立连接的三次握手机制和关闭连接的四次挥手机制
一、TCP建立连接的三次握手机制1.TCP 3次握手建立连接建立TCP连接:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)服务器收到syn包,必须确认客户的SYN(ack=j+1...原创 2019-12-12 20:04:41 · 1450 阅读 · 0 评论 -
Android 基础开发之HandlerThread介绍
Android 基础开发之HandlerThread介绍 HandlerThread的特点:HandlerThread本质上是一个线程类,它继承了Thread;HandlerThread有自己的内部Looper对象,可以进行looper循环;通过获取HandlerThread的looper对象传递给Handler对象,可以在handleMessage方法中执行异步任务;创建Handl...原创 2019-11-22 11:50:05 · 222 阅读 · 0 评论 -
Android 性能优化之RecycleView的性能优化原则
Android 性能优化之RecycleView的性能优化一、概述RecyclerView有着极高的灵活性,能实现ListView、GridView的所有功能,也能轻松实现ListView、GridView不易实现的功能,如多 Type 布局列表。在日常开发中,RecyclerView使用非常广泛,如果使用不当将会出现闪烁、卡顿、占用内存过高等问题,影响应用性能,也会影响用户体验,所以有必要...原创 2019-10-29 16:03:20 · 1483 阅读 · 1 评论 -
Android开发之获取Mac地址的兼容方法
随着Android的版本迭代,获取设备信息的方法也可能发生改变,在android 6生效的方法,在android 8可能已经不生效了。诸如此类,获取Mac地址的方法也发生了变化。这里找到了最新的适配方案(适配当前的最新版本Android 9.0),并且记录了整个适配的修复过程,以供参考。一、Android 6.0 之前,获得Mac地址的通用方式1、必须的权限 < uses-permi...原创 2019-07-03 17:52:06 · 1914 阅读 · 3 评论 -
Android深入研究之View的可见性检测
一、背景 在Android开发中,我们常常会对View的可见性visiblity进行操作或者检查。常见的场景有:在消息流中,根据ImageView是否在屏幕中出现了再决定是否加载;在视频流页面,当视频滑入屏幕被用户可见时播放,滑出屏幕就自动停止播放等等;网络请求数据,根据返回的数据结果控制相应View可见或不可见;需要根据view是否可见或第一次可见,做特殊的处理,如埋点上报等操作。...原创 2019-06-14 10:11:48 · 9704 阅读 · 2 评论 -
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 · 679 阅读 · 0 评论 -
Android性能优化之APP性能优化原则总结
使用过Android系统手机的同学都知道,Android手机越用越卡,这个卡主要体现在手机系统越用越卡,打开APP的速度越来越慢。Android手机越用越卡的原因主要有:1、Android系统源码是开放的,像国内的几大手机厂商,都是对系统进入定制开发,这样就会引发一系列问题,比如说著名的系统碎片化问题;2、APP开发人员要对各个系统做各种适配,开发人员的水平参次不齐,开发出来的APP就会出现这...原创 2019-08-07 17:12:22 · 705 阅读 · 1 评论 -
Android基础开发之启动其他应用的方式总结
Android 开发经常会遇到在一个应用中启动另一个应用的情况,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用、一个应用为其他应用导量等。在Android中一个应用启动其他应用主要由以下三种启动方式:方式一:通过包名和页面名称,直接打开应用的指定页面Intent intent = new Intent(Intent.ACTION_MAIN);intent.a...原创 2019-04-01 19:33:49 · 1029 阅读 · 0 评论 -
Android开发之获取网络IP地址方法总结
在进行Android应用开发过程中,有时候会遇到获取当前Android设备所使用的网络IP地址的场景,有时候需要本地的网络IP地址,即局域网地址,更多的时候是需要当前网络的真实的对外IP地址,即真实的网络地址,如大数据分析时往往需要Android设备上传本地的外网地址。本文对各种IP地址的获取进行了总结。 首先用大家比较熟悉的电脑端局域网地址和外网地址的获取方式对比一下:(1)、电脑端局域...原创 2019-07-16 12:03:55 · 9497 阅读 · 0 评论 -
Android APK签名、配置及遇到的问题分析
1.APK签名的原因 为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。2.APK签名好处 应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名。这是由于只有以同一个证书签名,系...原创 2019-07-20 16:50:26 · 448 阅读 · 0 评论 -
Android H5页面中iframe页面请求时无法携带cookie的问题解决方法
一、问题描述 最近修复一个日常开发很少遇到也很少会关注的问题,具体问题是在项目中接入了公司前端同事开发的H5页面,这个H5页面内部接入了第三方的页面(后面通过分析是以iframe方式嵌入H5页面的),从公司内部H5页面跳转到第三方页面时有些机型cookie获取不到。具体现象如下图: 问题分析:当H5页面中使用iframe内嵌一个页面时,由于内嵌页面和外部页面域名不同,导致cookie存在...原创 2019-07-30 17:32:08 · 4878 阅读 · 0 评论 -
Android工具学习之gradlew最全指令攻略
Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建app。Android Studio中默认就使用Gradle来完成应用的构建,除此之外我们可以用gradle的指令选择性的去构建我们所需要的app。用gradle的指令构建app,需要用到gradlew(即gradle wrapper...原创 2019-08-01 11:32:57 · 3740 阅读 · 0 评论 -
Android基础知识之SharedPreferences常见知识点总结
1.SharedPreferences简介 Sharedpreferences是Android平台上一个轻量级的存储类,可以用于保存应用程序的各种配置信息,如应用设置里面的各种开关、是否打开音效、是否使用震动效果、小游戏的玩家积分等,其本质是以“键-值”对的方式保存数据到本地的 xml 文件中,其文件保存在 /data/data//shared_prefs 目录下。 核心原理:以“键-值”...原创 2019-09-04 09:33:42 · 765 阅读 · 0 评论 -
Java 单例模式实现方式及其优缺点——单例模式还可以这样实现
单例模式三种初始化方法及其优缺点一、常见单例模式实现方式 单例模式:顾名思义即确保一个类只有一个实例,而且自行实例化(私有构造方法)并向整个系统提供这个实例。 常见的单例模式有三种模式:懒汉式单例、饿汉式单例、静态内部类单例(也叫登记式单例、holder单例)。1.饿汉式单例 实现方式:public class Singleton { private static fin...原创 2019-09-19 21:07:30 · 302 阅读 · 0 评论 -
Android 性能优化之基于AndroidStudio和MAT分析内存泄露问题
MAT(Memory Analyzer Tool) 是基于heap dumps来进行内存分析的工具,一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。使用AndroidStudio和MAT分析内存泄露问题具体步骤如下(以androidStudio3为例,androidStudio2可以用自带的内存分析...原创 2018-06-23 16:30:06 · 811 阅读 · 0 评论 -
Android Sdcard文件操作之读、写、增、删(Kotlin实现)
Android Sdcard文件操作之读、写、增、删(Kotlin实现) 在AndroidManifest.xml中加入访问SDCard的权限如下:<!-- 在SDCard中创建与删除文件权限 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><!...原创 2019-01-11 18:09:09 · 3640 阅读 · 0 评论 -
Java基础学习之线程同步方法总结
引入线程同步的原因:当有多个线程要同时访问一个变量或对象时,如果这些线程中既有读又有写操作时,就会导致变量值或对象的状态出现混乱,从而导致程序异常,用户也得不到想要的结果。比如,如果一个银行账户同时被两个线程操作,一个取100块,一个存钱100块。假设账户原本有0块,如果取钱线程和存钱线程同时发生,会出现什么结果呢?取钱不成功,账户余额是100;取钱成功了,账户余额是0。那到底是哪...原创 2018-07-29 09:16:14 · 203 阅读 · 0 评论 -
Android网络编程之socket和http编程的区别
HTTP为短连接 Http协议是建立在TCP协议之上的一种应用。它与TCP连接不同之处在于,客户端每次请求都需要服务器返回响应,在请求结束后,会主动释放连接,从建立连接到关闭连接的过程称为“一次连接”。由于HTTP每次请求都会释放连接,因为HTTP连接是一种“短连接”,所以要保持客户端在线状态,就必须不停地向服务器发起连接请求。所以在开发过程中,即使不需要获得任何数据,客户端也要...原创 2018-07-19 15:43:13 · 1472 阅读 · 0 评论 -
Android基础学习之进程间和线程间通信方式总结
首先介绍一下进程和线程的基本概念及两者之间的区别: 进程:是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。 线程:是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一些在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其...原创 2018-07-18 14:38:14 · 4354 阅读 · 0 评论 -
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 · 3087 阅读 · 0 评论 -
android:scrollbarStyle属性及滚动条和分割线覆盖问题
本文主要介绍android view的android:scrollbarStyle属性意义android:scrollbarStyle可以定义滚动条的样式和位置,可选值有insideOverlay、insideInset、outsideOverlay、outsideInset四种。 其中inside和outside分别表示是否在view的padding区域内,overlay和inset表转载 2014-06-28 09:37:59 · 784 阅读 · 0 评论 -
Android性能优化之数据库优化
本文为性能优化的第一篇——数据库性能优化,原理适用于大部分数据库包括Sqlite、Mysql、Oracle、Sql server,详细介绍了索引(优缺点、分类、场景、规则)和事务,最后介绍了部分单独针对Sqlite的优化。性能优化实例 1、索引简单的说,索引就像书本的目录,目录可以快速找到所在页数,数据库中索引可以帮助快速找到数据,而不用全表扫描,合适的索引可以大大提高数据库查询的转载 2014-03-14 10:21:54 · 830 阅读 · 0 评论 -
android几种定时器机制及区别【转载】
在android中,经常用到的定时器主要有以下几种实现:一、采用Handler与线程的sleep(long )方法二、采用Handler的postDelayed(Runnable, long) 方法三、采用Handler与timer及TimerTask结合的方法。下面逐一介绍:一、采用Handle与线程的sleep(long )方法 Handler主要用来处理接收到的原创 2014-02-22 11:07:05 · 760 阅读 · 0 评论 -
学习阅读源代码
作为正式进入Android软件开发行业刚刚半年的初级程序员的我,要学习和要掌握的知识和技能还有很多很多。刚进入公司,领导安排的是Android应用软件的开发,其实我是很想做驱动方面的开发工作的,因为自己之前是学C/C++出身的。但领导安排了,部门也没有做驱动的,自己只能硬着头皮开始搞Android应用了。 刚开始搞Android应用一点头绪没有,只能从最简单的书籍开始,一个个的敲上原创 2014-02-03 14:57:21 · 1095 阅读 · 0 评论 -
Java基础学习之接口和抽象类的概念、区别及适用的场景
1.接口 接口是抽象方法的集合,一个接口只有方法的形状而没有方法的具体实现,接口是Java面向对象提供的一种机制。 Java语言是一种单继承的,在类的继承中通过实现多个接口间接实现了多继承功能。接口的声明:[public] interface InterfaceName{ void method1(int arg1); void method2(); ......原创 2018-07-29 09:25:15 · 258 阅读 · 0 评论 -
Java基础知识之synchronized同步方法、代码块、静态方法、静态代码块的区别
Java中的同步块用synchronized标记,是同步在某个对象上,所有同步在一个对象上的同步块在同一时刻只能被一个线程进入并执行操作,其他等待进入该同步块的线程将被阻塞,直到执行该同步块中的线程退出。 有四种不同的同步块:实例方法同步; 静态方法同步; 实例方法中的同步块; 静态方法中的同步块。1.实例方法同步 Java实例方法同步是同步在拥有该方法的对象上。这样...原创 2018-07-26 14:34:48 · 3121 阅读 · 0 评论 -
Kotlin开发利器之协程
Kotlin开发利器之协程协程的定义 协程的开发人员 Roman Elizarov 是这样描述协程的:协程就像非常轻量级的线程。线程是由系统调度的,线程切换或线程阻塞的开销都比较大。而协程依赖于线程,但是协程挂起时不需要阻塞线程,几乎是无代价的,协程是由开发者控制的。所以协程也像用户态的线程,非常轻量级,一个线程中可以创建任意个协程。项目中引入Kotlin的协程 添加依赖:corout...原创 2018-12-30 10:26:46 · 1424 阅读 · 0 评论 -
Android N及以上版本应用安装包下载完成自动弹出安装界面的适配方法
应用安装包下载完弹出安装界面适配Android N及以上版本遇到文件及解决方法 在实现下载和安装APP功能的时候在Android较高版本可能会遇到如下的问题:安装Apk时报错:android.os.FileUriExposedException: file:///storage/emulated/0/Download/*.apk exposed beyond app through Int...原创 2018-12-07 16:50:30 · 3284 阅读 · 0 评论 -
Android深入学习之各种隐私权限判断和获取方法总结
Android深入学习之各种隐私权限判断和获取方法总结 从Android SDK 23 开始, Android就改变了权限的管理模式。对于一些涉及用户隐私的权限则需要用户的授权才可以使用。在此之前,开发者只需要在AndroidManifest.xml中注册,如网络权限、wifi权限等等:权限即可,但是现在除了注册还需要进行手动的授权。 没有涉及用户隐私的权限申请的方式比较简单,即只需要在A...原创 2018-10-14 16:58:51 · 4054 阅读 · 0 评论 -
Kotlin开发Android项目之静态方法、静态变量使用示例
Kotlin开发Android项目之静态方法、静态变量使用示例1.Kotlin定义一个都是静态方法的类 Kotlin定义一个都是静态方法的类,比如项目中比较常见的工具类,只需要将类class换为object即可,下面是Java写法和Kotlin写法的对比:Java写法:public class StaticClass { public static int sum(int num...原创 2018-10-07 11:25:16 · 1025 阅读 · 0 评论 -
Android深入学习之requestLayout、invalidate和postInvalidate的区别
Android开发离不开界面的重绘和更新,尤其是自定义控件更是经常遇到重绘更新界面的场景,下面具体介绍一下重绘界面几个方法的区别: (1)、requestLayout:当view确定自身已经不再适合现有的区域时,该view本身调用requestLayout这个方法要求parent view重新调用它的onMeasure、onLayout来重新计算view大小以及...原创 2018-09-17 15:32:01 · 838 阅读 · 0 评论 -
Android 多线程编程之 HandlerThread 详解
HandlerThread有那些特点:HandlerThread本质上是一个线程类,它继承了Thread; HandlerThread有自己的内部Looper对象,可以进行looper循环; 通过获取HandlerThread的looper对象传递给Handler对象,可以在handleMessage方法中执行异步任务; 创建HandlerThread后必须先调用HandlerT...原创 2018-08-09 09:51:11 · 358 阅读 · 0 评论 -
Android高级开发工程师技术面试经验总结
笔者前段时间参加了绿厂的Android高级开发工程师技术面试,总结一下,希望对即将参加技术面试的程序员能有所帮助。 首先面试官问的是项目相关的问题,如项目的实现、项目中遇到的问题以及遇到的问题是如何解决的,同时针对项目中的某些技术点进行不断的追问。 在问完项目相关的问题之后,面试官开始问Android基础知识相关的问题,具体问到了以下这些问题:...原创 2018-07-21 12:08:48 · 890 阅读 · 0 评论 -
Java基础知识之String、StringBuilder和StringBuffer三者的区别
String、StringBuilder和StringBuffer这三个类在操作字符串时主要有运行速度和线程安全这两方面的区别:1.运行速度 运行速度,即执行字符串操作时代码执行的时间快慢,在这方面运行速度快慢为:StringBuilder > StringBuffer > String。 String最慢的原因:String为字符串常量,而StringBuilder和S...原创 2018-07-21 11:26:01 · 198 阅读 · 0 评论 -
Eclipse高级调试技巧
记得刚刚毕业的时候,自己连断点也不会打,当时还在用JCreate ,就连毕业设计也是用 System.out 找 Bug 的,想想真的很笨。开始工作后,一个星期过去了,在一个 1 、 2 百万行的系统中找 Bug ,我依然在用 System.out ,当时最痛苦的就是修改代码,每次找到疑似 Bug ,就输出一下,然后重启(那时也不知道代码热替换),直到有一天带我的导师发现了这样笨笨的调试 Bug转载 2014-02-03 17:45:25 · 2741 阅读 · 0 评论