自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 android studio打开新项目时注意事项

(1)随便打开一个自己的安卓工程,复制build.gradle里面的gradle版本,把目标项目的build.gradle(Project级别的)里面的gradle版本改成自己的版本,比如:classpath 'com.android.tools.build:gradle:3.5.2'(2)把目标项目里的build.gradle(Moudle级别)里面的compileSdkVersion、targetSdkVersion、minSdkVersion改成自己的版本,比如:(注意一个工程里面可能有多个Mo

2021-01-11 15:22:41 1084

原创 android 网络请求问题

     在请求网络时出现网络连接错误:考虑两个问题:(1)是否有在清单文件里声明网络访问权限 <!--连接网络--> <uses-permission android:name="android.permission.INTERNET" /> <!--用于管理监听网络状态的变化--> <uses-permission android:name="android.permission

2021-01-11 14:15:41 187

原创 butterknife 配置与简单实用

第一步:配置依赖 全局的 build.gradle(app)加上如下:implementation 'com.jakewharton:butterknife:10.2.1'annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'在build.gradle(app)的android{}中加入以下代码:compileOptions { sourceCompatibility JavaVersion.VERSION

2021-01-06 14:26:38 240

原创 手写Rxjava 装饰器模式

1.抽象观察者/** * 抽象观察者 * @param <T> */public interface Observer<T> { //用于订阅成功的回调 void onSubscribe(); //收到消息 void onNext(T t); //出错的回调 void onError(Throwable e); //从订阅到消息全部发送成功 void onComplete();}2.抽象被观察者publ

2020-12-23 15:26:30 222

原创 Android recovery

(1) Main system:用boot.img启动的Linux系统,Android的正常工作模式。(2)Recovery:用recovery.img启动的Linux系统,主要是运行Recovery程序。(3)Bootloader:除了加载、启动系统,还会通过读取flash的MISC分区获得来自Main system和Recovery的消息,并以此决定做何种操作。     在Recovery的工作流程中,上述三个实体的通信必不可少。通信的接口有以下两

2020-12-16 18:16:55 354

原创 Serializable和Parcelable

什么是序列化?     序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。什么时候需要实现序列化Serializable?     一般来说你的对象需要网络传输或者持久化(对象直接转换为字节的形式传输),只要你的对象需要转换为字节的形式那么你的

2020-12-01 12:07:28 73

原创 java Lock(与synchronized作比较)

文章目录一、synchronized的缺陷二、java.util.concurrent.locks包下常用的类1.Lock2.ReentrantLock3.ReadWriteLock4.ReentrantReadWriteLock5.Lock和synchronized的选择三、锁的相关概念介绍1.可重入锁2.可中断锁3.公平锁4.读写锁一、synchronized的缺陷     synchronized是java中的一个关键字,也就是说是Java语言内置

2020-11-26 10:10:23 92

原创 String StringBuffer和StringBuilder

StringBuffer:线程安全、执行速度慢StringBuilder:线程不安全、执行速度快多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。小结:(1)如果要操作少量的数据用 String;(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。具体参考:图析:String,StringBuffer与StringBuilde

2020-11-25 17:11:25 60

原创 java synchronized解析

synchronized在使用上有3种用法:     1.静态方法加关键字     2.实例方法(即普通方法)加关键字     3.方法中使用同步代码块区别:前两种方式最为偷懒,第三种方式比前两种性能要好。synchronized从锁住的是谁的维度来看一共有两种情况:     1.锁住类&nbsp

2020-11-25 16:42:33 67

原创 9. 回文数(简单)

题目描述:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例:输入: 121输出: true输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。分析:     映入脑海的第一个想法是将数字转换为字符串,并检查字符串是否为回文。但是,这需

2020-11-19 10:56:39 86

原创 7. 整数反转(简单)

题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 :输入: 123输出: 321输入: -123输出: -321输入: 120输出: 21分析:我们可以一次构建反转整数的一位数字。在这样做的时候,我们可以预先检查向原整数附加另一位数字是否会导致溢出。如果构建出来的整数大于Integer.MAX_VALUE或者小于Integer.MIN_VALUE则直接返回0。代码:public int reverse(int x) { int n = 0

2020-11-19 10:21:26 130

原创 328. 奇偶链表

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL解析:public ListNode oddEvenList1(ListNode

2020-11-13 10:05:00 65

原创 两数相加

题目描述     给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807解

2020-11-12 14:21:22 65

原创 两数之和

一、问题描述     给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。二、解决方法(1)暴力解决//双重循环 循环极限为(n^2-n)/2 public static int[] twoSum(int[] nums, int target) { int[] result = new int[

2020-11-12 11:36:16 77

原创 Java接口和抽象类

2020-10-16 11:13:15 160

原创 Android MVP

为什么要使用MVP架构?     MVC在Android中的缺陷:Activity要处理View层,又要处理Model层,并且Activity并不是一个标准的MVC中的Controller,它的首要职责是加载应用的布局和初始化用户界面,并接受来自用户的操作请求进而做出响应。随着界面及其逻辑的复杂度不断提升,Activity类的职责不断增加,以致Activity变的庞大臃肿。     MVP解决了MVC中

2020-10-13 21:48:12 113 1

原创 MVP框架两种实现方式

第一种MVP:MVP框架:     View层:BaseActivity/** *让子类去实例化Presenter层 */public abstract class BaseActivity<P extends BasePresenter> extends AppCompatActivity implements View.OnClickListener { public P mPresenter; @Overr

2020-10-13 21:47:01 359 1

原创 Android Binder AIDL解析

Android多进程     当代智能手机的运行内存大多是6G、8G、12G,运行内存已经很大了, 为什么还会出现OOM呢?     这是因为在安卓中每一个APP都会运行在一个独立的虚拟机中,这个独立的虚拟机的内存的大小是由系统指定的,一般虚拟机内存大小是32M、48M、64M,当遇到一些内存消耗较大的操作(比如加载图片)时,可能会出现内存不足的情况。在安卓中每一个进程对应一个虚拟机实例,使用多进程的方式

2020-10-09 19:35:14 139

原创 AIDL使用

一.新建一个项目AIDLservice,创建Person类并继承Parcelable接口。public class Person implements Parcelable { private String name; private int grade; public Person(String name ,int grade){ this.name = name; this.grade = grade; } protected P

2020-10-08 18:33:29 2602 3

原创 AIDL踩坑

    直接创建Person.aidl会报错:    解决方法:先随便起一个名字,比如创建一个Person1.aidl文件,然后再将该文件rename为Person.aidl。

2020-10-08 16:44:40 219

原创 Android Handler解析和相关问题

Handler解析Handler工作流程(1)通过sendMessage将Message存入MessageQueue:Handler.sendMessage(Message msg)     ->Handler.sendMessageDelayed(Message msg,long delayMillis)          ->Hand

2020-10-07 21:50:05 209

原创 Android ImageView用法(xml)

Android ImageView用法ImageView继承自Viewandroid:background 设置图片android:src 设置图片background和src都可以设置图片,它们之间的区别:background指的是背景,src指的是内容。在使用src填入图片时,是按照图片大小直接填,不会改变图片的大小,而使用background,则会根据ImageView给定的宽度进行拉伸。       当使用src

2020-08-12 21:10:15 1661 1

空空如也

空空如也

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

TA关注的人

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