自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lidongxiu0714

读书以博学,实践以登高!!!

  • 博客(222)
  • 收藏
  • 关注

原创 windows下databinding xml文件中有中文无法编译问题(databinding.annotationprocessor.ProcessExpression)

Mac上编译没有问题,windows上一直报databinding.annotationprocessor.ProcessExpression错误。解决办法1:所有的@{}中的中文换成@{@string/str},利用引用string中文本的方式解决,但对于老项目则比较麻烦。解决办法2:其实是java的编码问题,只需要在环境变量中添加JAVA_TOOL_OPTIONS 为-Dfile.encoding=UTF-8,就可以解决。...

2020-07-29 11:58:06 114

原创 android studio Library source does not match the bytecode for class

android studio Library source does not match the bytecode for class 这个错误是引用的aar或者jar中的某些代码,还是旧的库中的文件,可能的原因是android Studio 引用了gradle的cache中的库,导致无法使用新的代码,编译无法通过。解决办法:找到gradle缓存的位置:打开缓存:找到缓存的文件夹,...

2020-01-09 10:50:57 753

原创 android 判断是白天还是晚上,然后设置地图模式

简单的判断白天,晚上的java代码 /** * true day 白天 return false晚上 * @return */ public static boolean isDayOrNight() { if (get24HourMode()) { //24小时制 Calendar c ...

2020-01-03 13:55:26 279

原创 gradle中简单配置一个项目对应不同系列设备生成部分代码不同app文件

build.gradle中添加 ,defaultConfig 中设置 flavorDimensions “default” productFlavors { "C80X" { // applicationIdSuffix ".d" 也可以设置不同applicationId buildConfigField "String", "...

2019-12-03 17:21:08 93

原创 android Studio修改生成apk文件的名称

app的build.gradle中添加:variant.name是buildTypes中设置的type,android.defaultConfig可以获取versionName。SimpleDateFormat需要引入在build.gradle的文件顶部 import java.text.SimpleDateFormatandroid.applicationVariants.all { va...

2019-11-28 13:48:10 260

原创 android 屏幕方向随传感器变化,并带有切换大屏,小屏和锁定屏幕方向

直接上完整代码:import android.content.pm.ActivityInfo;import android.content.res.Configuration;import android.os.Bundle;import android.provider.Settings;import android.support.v7.app.AppCompatActivity;...

2019-10-09 19:36:49 141

原创 Android 屏幕方向相关,setRequestedOrientation,OrientationEventListener

1 Activity 在AndroidManifest.xml设置方向android:screenOrientation正向拿着手机(平时正常拿手机)对应角度为0度,此时屏幕为为竖屏,旋转180度,对应角度180度,此时屏幕为反向竖屏;90时此时屏幕为横屏(用户右侧(正向)横屏拿着手机),屏幕角度为270,此时屏幕为反向横屏。Android可以利用android:screenOrientat...

2019-10-09 19:03:02 2175 1

原创 debugCompile(debugImplementation)和 releaseCompile(releaseImplementation)的使用-leakcanary release中不起作用

debugCompile(debugImplementation)和releaseCompile(releaseImplementation)debugCompile(debugImplementation)debugCompile 只在 debug 模式的编译和最终的 debug apk 打包时有效releaseCompile(releaseImplementation)Release ...

2019-10-08 11:35:40 1794

原创 DialogFragment监听back键和设置宽高

implements AddressManagerView , DialogInterface.OnKeyListener {@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInst...

2019-09-20 10:17:23 488

原创 Fragment addToBackStack(null)的作用

Fragment常用于一个activity中展示多个相对独立的部分,利用add,show,hide进行fragment的添加,展示和隐藏。 FragmentA fragmentA = FragmentA .newInstance(parameter); getSupportFragmentManager().beginTransaction() ...

2019-09-20 10:16:27 1310

原创 线程的状态

线程的状态 public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A thread in...

2019-09-01 10:44:37 101 1

原创 Messenger 实现进程间通信IPC

AIDL可以实现进程间通信,但使用稍显复杂,Messenger也可以实现进程间通信,Messenger底层实现利用了 AIDL ,系统已经帮我们完成了Aidl的书写。Messenger可以在不同进程中传递 Message 对象,利用Handler一次只处理一个请求,不存在并发执行的情形。所以这是Messenger的优点,也是它的缺点,它无法用于大量的并发操作,但对于简单的进程间通信则十分好用。利用...

2019-09-01 10:23:50 112

原创 使用锁实现同步简单使用

如果想要static方法和普通的方法在同步情况下不能同时执行,单靠synchronized实现非常有难度,因为静态方法以class对象为锁,普通方法以具体的具体的对象为锁,java提供的另一种同步机制利用Lock接口及其实现类,比synchronized更加灵活。synchronized可以支持更灵活的同步代码块结构,synchronized只能在synchronized块结构中获取和释放锁,L...

2019-09-01 10:22:37 102

原创 synchronized实现同步

利用synchronized关键字是最简单的实现同步的方式,synchronized可以用于方法,代码块,synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证一个线程的变化可见。也就是保证了临界区某一时刻只能被一个线程访问(被synchronized修饰的方法,或者代码块都是临界区)。当一个线程进入了临界区,其他试图访问该临界区...

2019-09-01 10:22:15 115

原创 影响线程执行的函数(sleep,join,yield,priority,daemon)

1 sleepsleep使当前线程睡眠指定的毫秒数(暂停执行),但由于系统计时器和调度方法的影响,时间不是那么精准。当线程在同步代码中持有monitor时,sleep不会导致线程释放已经获取的锁(虽然当前线程暂停了,但其他竞争线程依然无法获取锁)。会抛出线程中断异常,必须处理。到达指定之间之后,线程会自动苏醒,变为可运行状态而不是运行状态,所以sleep内的时间是线程休眠的最短时间。sle...

2019-09-01 10:20:48 71

原创 线程同步和同步原理

1 多线程问题,临界区单线程由于按顺序继承(即使存在编译器优化,指令重排等优化策略也会保证程序的正确执行),多线程情况下,如果存在共享资源的情况,就会出现并发问题。多个线程访问或者修改共享数据,会导致数据的不一致性,进而导致出错,线程同步机制就是用来防止错误发生的机制。临界区定义为访问共享资源的代码块,如果同一时间能够保证只有一个线程访问临界区,就不会发生错误。public class D...

2019-09-01 10:15:48 483

原创 如何结束线程-线程中断

线程停止的方式:线程执行完毕,自然会停止异常退出设置了标志位,当标志位为false时退出线程中断退出线程函数执行完毕正常退出和发生异常被迫退出都不受我们控制,下面讨论控制线程停止的方式。设置退出标志位:package com.sync.demo;import javax.swing.text.html.HTML.Tag;public class Demo5 { pub...

2019-09-01 10:14:56 227

原创 线程间交互(wait notify)

1 线程间交互线程间的交互,也就是相互通知,进而达到相互控制,java中线程间的交互要用到java.lang.Object的类的三个方法分别是wait,notify(),notifyAll,三个方法的调用必须在同步环境内调用,也就是线程获取了对象的锁后才能调用。如果线程A持有线程B的对象的锁,多线程环境下只有当线程A获取了线程B的锁后(同步环境下)时,线程A才能调用B的wait,notify(...

2019-09-01 10:13:01 262

原创 Thread调用start和run的区别

学习Thread的第一天就知道要调用Thread的start方法,不要调用Thread额run方法,为什么呢?新建一个Thread类的实例,然后调用run方法,相当于调用普通的方法,属于当前线程的一个方法执行,可以重复多次调用,run方法运行结束, 此线程终止, 而CPU再运行其它线程。run()方法当作普通方法的方式调用,程序还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的...

2019-08-12 16:26:02 476

原创 implementation,compile,api,Unable to resolve dependency ':app@debugAndroidTest/compileClasspath'

gradle3.+版本后,gradle的依赖方法发生了改变,推荐使用implementation,compile已经不被推荐,api的作用和compile相同。androidTestCompile被 androidTestImplementation替换,testCompile被 testImplementation 替换,本篇主要讲解implementation和api。简单总结上面的意思就...

2019-08-12 09:47:16 654 1

原创 进程线程的概念区别

以下内容来自于百度百科和自己的理解:1进程进程(Process)的抽象概念是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。通常情况下window下一个exe就是一个进程,android中一个apk就是一个进程(也可以多进程)。进程的关键点:第一,进程是一个实体。每一个进程都有它...

2019-08-12 09:45:10 415

原创 编译时注解学习八 -模板文件读取

补充一个读取模板文件生成类的方法过程。模板文件内容:package %package%;public class %classname% { private String name; private int data; private void setName(String name){ this.name = name; } ...

2019-08-01 19:42:28 598

原创 Android 动画之 LayoutAnimation 动画

1 LayoutAnimation 简介前面讲解了LayoutTransition动画字面翻译是布局的过渡也就是布局动画,这个类可以实现ViewGroup的布局改变时自动执行动画,LayoutTransition和属性动画一起在API 11时添加它使用的是属性动画,主要负责容器内item添加删除时候的效果。LayoutAnimation 从API 1就存在,用于将动画运用在容器item上,使用...

2019-08-01 13:28:01 1226

原创 Android 中已提供的注解使用

Android定义了很多有用的注解,可供我们使用,方便编程减少潜在错误的发生。1 @Override @ NonNull @NullableAndroid 中最常见的就是@Override,继承基类,重写函数时不加@Override不会报错,加上@Override编译期会帮我们检查重写是否合法,如果参数,或者类型的不合法会给警告。@NonNull 告诉编译器,参数非空,可以避免函数内部参...

2019-08-01 09:37:14 990

原创 编译期注解学习七-如何进行调试

1 编译期注解调试步骤编译普通程序,只需要直接点击“app”就能够完成编译,调试更是简单,直接点击debug build或者attach to process 就可以开始调试。注解处理器Processor在编译期执行的,此时还没有app的进程,那么如何把调试器attach到编译期间的进程上,只能通过远程调试,远程调试可以把调试器attach到任意时期的进程上。1.1新建远程调试如下图所示,...

2019-08-01 09:36:03 1153 1

原创 如何删除Android Studio 缓存的从maven仓库拉取的aar或者jar库

1 删除拉取库的缓存,重新从远端拉取如果进行组件开发很头疼的一个问题是如果好几个组件的引用链出现问题,或者是某个组件有bug,然后修改了model,如果不修改版本的上传新的版本到maven仓库,android studio 不会重新拉取,或者说加载过某个版本之后,想要重新从远端拉取新的model,由于缓存的问题会导致编译出错。如果项目能够编译成功可以使用gradlew build --refr...

2019-07-29 15:16:24 2410

原创 编译期注解学习六- 生成java文件javapoet

1 生成文件方式编译期注解通过读取注解,然后处理注解字段,最终的目的是在编译代码之前生成所需文件。生成文件的方式有多种,例如StringBuilder进行拼接,模板文件进行字段替换,javaPoet 生成。StringBuilder进行拼接,模板文件进行字段替换进行简单文件生成还好,如果是复杂文件,拼接起来会相当复杂如下所示: private String brewCode(String...

2019-07-29 15:13:50 1275

原创 编译期注解学习五 - ElementKind,TypeKind,不同Element类型判断

1 ElementKind如何判断Element的类型呢,需要用到ElementKind,ElementKind为元素的类型,元素的类型判断不需要用instanceof去判断,而应该通过getKind()去判断对应的类型类型 说明PACKAGE 包ENUM 枚举CLASS 类ANNOTATION_TYPE 注解INTERFACE 接口ENUM_CONSTANT 枚举常量FIELD...

2019-07-28 11:36:56 1650

原创 编译期注解学习四 简单的view注入框架

1 项目结构本篇文章比较简单,如果熟悉apt的同学就不用看了,只是作为入门级功能。经过前三篇的讲解,今天做一个简易版的View注入框架,功能类似黄油刀ButterKnife中的一小部分功能,Activity中view通过注解获取实例。项目结构:processor_lib是一个java lib 项目,实现processor。annotationlib 注解。injectlib 供用户调...

2019-07-25 19:56:19 1107

原创 编译时注解学习三之 注解处理器AbstractProcessor工具和Element属性简述

1 如何读取build.gradle配置的常量配置,读取:@SupportedOptions({"CLASSNAME"})@SupportedAnnotationTypes("com.ldx.annotationlib.BindView")@SupportedSourceVersion(SourceVersion.RELEASE_7)//@AutoService(Processor.cl...

2019-07-21 14:29:29 1855

原创 编译时注解学习二之 注解处理器初探AbstractProcessor

1注解处理器介绍使用注解可以方便开发,因为编译期注解处理器会根据注解自动帮使用者完成很多重复性操作。什么叫编译期注解呢,编译期注解是只在编译期有效的注解,注解处理器根据注解会帮我们生成操作所需的工具类,完成相应操作。类似的框架有黄油刀,EventBus3等。注解处理器Annotation Processor会在编译项目时获取相应的注解,APT(Annotation Process Tool),...

2019-07-21 11:25:55 1895

原创 package,项目结构包名,applicationId概念学习

本文主要内容来自:https://developer.android.com/studio/build/application-id1 概述利用Android Studio 构建应用时有applicationId的概念,Eclipse构建项目时则只有包名进行区分。Android Studio中既有项目结构包名 ,AndroidManifest.xml中的package属性又有Applicati...

2019-07-19 11:21:09 1711

原创 编译时注解学习一之 Element元素

前面的文章学习[java基础之注解](https://blog.csdn.net/u010126792/article/details/83022093),掌握了注解的基本用法。使用系统或者大神写的框架库提供给我们注解,可以省略好多配置,特别是java Spring开发中注解更是多的眼花缭乱。最近需要用到编译时注解,所以就对AbstractProcessor进行深入的学习,首先对javax.la...

2019-07-12 14:10:47 1568

原创 Android studio 代码模板,快速生成特定代码(Live TempLates)

1 Live TempLatesAndroid studio 提供了Live TempLates 可以通过简单的一个单词生成一串固定代码,方便了开发。首先感受一下:2 常用templateconst private static final int $name$ = $value$;foreach for ($i$ : $data$) { $cursor$}...

2019-07-03 17:49:19 1958

原创 Android 获取签名文件jks的SHA1值或者SHA256的值

apk文件需要利用jks进行签名,可以防止应用被恶意篡改替换,标识开发者身份,加强了应用的安全性.(keystore也可以)第一种利用keytool工具keytool -list -v -keystore canvaskeystore.jks第二种利用代码获取从高德获取: public static String sHA1(Context context) { try ...

2019-07-03 17:40:00 2465

原创 adb常用命令

1 adb开启和关闭(许多时候连接设备一直显示offline,可以试着重启adb服务,获取安装了手机助手它自身会带有一个adb会影响使用)adb start -server // 开启adb服务adb kill -server // 杀死adb服务2 使用adb查看当前连接的设备adb devices // 查看当前连接的设备,如果adb服务还没有开启,这个命令也会自动开...

2019-07-02 14:53:13 1171

原创 Activity 设置SingleTask模式,当栈中已有Activity实例时的生命周期

Activiyt的普通启动模式每次利用startActivity都会创建新的Activity实例,有些场景需要栈中只有一个Activity实例,类似app的主页MainActivity,这时就需要用到SingleTask。普通的Activity启动后的生命周期为onCreate-》onstart-》onresume,每次利用Intent启动一个Activity都会创建新的实例,走上面的生命周期。...

2019-07-02 14:03:44 3650

原创 AndroidStudio Analyze->run inspection by name (查找未使用资源和潜在空指针)

AS中lint的工具 Analyze可以对代码进行动态检测,功能十分强大,可以帮助我们发现代码的潜在bug(内存泄漏,空指针),未使用的资源和不规范的写法等等很多问题。平时用的最多的功能就是点击工具栏的Analyze-> inspect code ,其实还可以通过运行特定命令进行代码中某一项的检测,运行 run inspection by name,下面介绍一些常用的命令的名字。常用的...

2019-06-24 16:09:53 2256

原创 EditText 富文本学习七-实现微博热门话题@,#选择好友,整体删除,整体选中功能(思路,简单实例,提取于其他库)

1首先看效果(有点粗糙)整体删除:整体选择:@#符号监听:2 实现代码整体删除功能,要删除一个热门话题需要整体进行删除: mEditText.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, ...

2019-06-21 16:50:05 1941

原创 AS编译错误,builder.dexing.DexArchiveBuilderException,tools.r8.CompilationFailedException

引入新库,导致编译错误:因为jiaozivideoplayer库中编译使用了jdk8,而我的工程没有使用jdk8,所以会报上面的错误,只要再工程的gradle文件中添加:compileOptions {sourceCompatibility 1.8targetCompatibility 1.8}就可以正常编译了。...

2019-06-21 14:06:39 1790

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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