自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (6)
  • 收藏
  • 关注

转载 AndroidStudio4.2 右上角Gradle不显示task

参考 Android Studio 的 Gradle Task 没有显示的问题

2021-05-28 15:37:00 1562

原创 Cannot access ‘<init>‘: it is package-private

该错误主要时由于构造方法没有写public例如:public class AchievementMultiBean{ AchievementMultiBean(){}}

2021-05-08 18:44:45 3506

原创 AndroidStudio 4.1.2修改代码不生效

问题:每次编译运行的都是之前的代码解决方案一:关闭 Instant Run 功能,在AndroidStudio4.1.2中用HotSwap代替了取消勾选 Enable hot-swap agent for Groovy code方案二:关闭Allow parallel run功能取消勾选Allow parallel run功能方案三:移除热修复我这里移除了Tencent/matrix开源库参考android studio 修改代码不生效,终极解决方案!...

2021-04-25 11:58:56 863

原创 liveData使用和源码分析

liveData基本使用class ChooseAreaViewModel :ViewModel(){ var provinceLiveData = MutableLiveData<MutableList<Province>>() fun getProvinceList(){ viewModelScope.launch { provinceLiveData.value = PlaceRepository.getProvinceLis

2021-04-16 15:49:21 242

原创 lifeCycle使用及源码

lifeCycle使用class MyObserver:LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_START) fun activityStart(){ Log.e("TAG","activityStart") } @OnLifecycleEvent(Lifecycle.Event.ON_STOP) fun activityStop(){ Log.e(

2021-04-15 18:14:20 217

原创 viewModel在fragment中使用

viewModel在frgamnet中使用,如果使用activity例如viewModelFragment = ViewModelProviders.of(requireActivity()).get(ChooseAreaViewModel::class.java)这种方式和在activity中使用相同参考viewModel源码如果使用viewModelFragment = ViewModelProviders.of(this).get(ThirdFragmentViewModel::class.

2021-04-12 20:11:16 7311

原创 viewModel源码

基本使用:class ChooseAreaViewModel :ViewModel(){ var provinceLiveData = MutableLiveData<MutableList<Province>>() fun getProvinceList(){ viewModelScope.launch { provinceLiveData.value = PlaceRepository.getProvinceList()

2021-04-12 18:22:26 320

原创 android studio profiler崩溃

删除测试手机/data/local/tmp/perfd文件夹上图中已经被删除

2021-04-08 18:17:03 868

原创 android多个依赖库版本冲突

在app模块下build.gradle文件中,设置如下android { ...... //指定依赖库对应得版本 configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested //打印依赖库得组名称

2021-04-07 17:18:24 573

原创 android studio zip file is empty错误

该错误是由于项目使用了HujiangTechnology/gradle_plugin_android_aspectjx库导致,移除该库zip file is empty

2021-03-31 11:59:43 839

原创 viewPager中fragment懒加载

在Android9之前使用setUserVisibleHint方法open class BaseFragment28:Fragment() { private var isViewCreated = false private var isUIVisible = false override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view,

2021-03-29 13:46:07 168

原创 threadLocal

threadLocal简单使用:public class ThreadLocalTest { public static final ThreadLocal<String> holder = new ThreadLocal<>(); public static void set(){ new Thread(() -> { ThreadLocal<String> holder1 = new Thre

2021-03-26 10:00:43 129

原创 surfaceView简单使用,绘制正弦线

class SurfaceViewTest :SurfaceView,SurfaceHolder.Callback,Runnable{ constructor(context:Context):super(context) constructor(context: Context,attrs:AttributeSet):super(context,attrs) constructor(context: Context,attrs: AttributeSet,defStyleAt

2021-03-23 17:33:53 174

原创 Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:

gradle报错:解决方案:解决该错误参考连接错误原因是下方格式冒号不对修改成等于号就可以

2021-03-19 16:30:50 7300 2

原创 Could not get unknown property ‘plugin‘ for project ‘:module_user‘ of type org.gradle.api.Project.

gradle报错如下所示这里plugin格式错误主要原因是这个后面少了一个冒号

2021-03-19 16:23:24 3766

原创 EventBus源码

1、数据传递class EventBusActivity:AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_event_bus) button.setOnClickListener {

2021-03-10 17:27:56 211

原创 handler应用分析卡顿

public static void loop() { final Looper me = myLooper(); if (me == null) { throw new RuntimeException("No Looper; Looper.prepare() wasn't called on this thread."); } if (me.mInLoop) { Slog.w(TAG,...

2021-03-10 10:33:11 338

原创 handler

handle使用class HandleActivity:AppCompatActivity() { companion object{ fun startAct(context: Context){ context.startActivity(Intent(context, HandleActivity::class.java)) } } private val handle = @SuppressLint("Handl

2021-03-09 17:14:33 115

原创 glide缓存

LRU缓存添加:glide根据传入不同的contxet内置不同的fragment,public RequestManager get(@NonNull Context context) { if (context == null) { throw new IllegalArgumentException("You cannot start a load on a null Context"); } else if (Util.isOnMainThread() &&am

2021-03-04 15:46:58 220 1

原创 android studio 项目无法运行 edit configurations为空

替换为项目可以运行的文件若运行报错提示修改为上述替换wrapper文件项目的classPath

2021-02-26 11:37:31 1855

原创 npm清除缓存

命令清除缓存npm cache clean --force,或者删除npm-cache文件,目录为:C:\Users\10133\AppData\Roaming中得npm-cache

2020-10-09 13:44:57 3652

原创 堆排序

public class SortHeap { public static void main(String[] args) { int[] nums = {33,0,30,22,18,90,65,6,8,39,59}; headSort(nums); for(int num : nums){ System.out.println(num); } } public static void headSort(int[] list){ //构造初始堆 for(i

2020-10-09 10:40:52 145 1

原创 二叉搜索树

二叉树public class BST2<Key extends Comparable<Key>,Value> { private Node root; private int size; class Node{ private Node left; private Node right; private Key key; private Value value; public Node(Key key,Value value){

2020-10-09 09:21:44 110

原创 约瑟夫环java链表实现

public class Main {public static void main(String[] args) { int n = 41,m = 5;//定义总人数n,和出圈数字m //初始化循环列表,头结点first和尾结点p int size = n; Node first = new Node(1); Node p = first; for(int i=2; i<=n; i++){ Node te

2020-09-16 16:29:32 229

原创 Retrofit下载文件进度

默认情况下,Retrofit在处理结果前会将整个Server Response读进内存,这在JSON或者XML等Response上表现还算良好,但如果是一个非常大的文件,就可能造成OutofMemory异常。因此我们在进行下载大文件时需要使用@Streaming注解,使用@Streaming主要作用是把实时下载的字节就立马写入磁盘,而不用把整个文件读入内存。final ExecutorSe

2017-10-20 13:28:55 1550

原创 Retrofit基本使用

首先配置build.gradlecompile 'com.squareup.retrofit2:retrofit:2.3.0'compile 'com.squareup.retrofit2:converter-gson:2.3.0'//ConverterFactory的Json依赖包,让JSON和Java对象相互转换,这里需要值得注意的是导入的retrofit2包的版本必须要一致,否则就会报错。

2017-10-19 17:35:40 489

原创 oKHttp基本封装

需求:get请求和post请求,上传文件和下载文件时返回进度oKHttpClient实例只创建一次如果用户在结果还未返回时又连续多次请求相同的api,只保留最后一次,前面的中断请求返回的JSON数据转化成实体对象访问服务器是异步请求,将请求结果回调到主线程首先用一个抽象类用于回调public abstract class ResultCallback { public abstr

2017-10-17 15:01:45 303

原创 okHttp基本使用

okHttp的异步get请求: OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("http://10.0.2.2:8080/myweb/test.json") .method("GET",null)

2017-10-03 13:48:56 322

原创 HttpURLConnection的post请求上传键值对和json数据

使用Tomcat服务器,具体配置web可参考:Eclipse创建JAVA web工程 创建完成后编写Servlet,代码如下:import java.io.IOException;import java.io.InputStream;import java.util.Enumeration;import javax.servlet.ServletException;import javax

2017-10-02 21:10:06 2381

原创 HttpURLConnection的get请求

首先需要获取HttpURLConnection的实例,需要new出一个URL对象,并传入目标网址,然后调用openConnection()方法即可如下所示:URL url = new URL("http://www.baidu.com"); HttpURLConnection connection = (HttpURLConnection)url.openConnection();得

2017-09-23 14:25:48 2459

原创 http协议

1.TCP/IP协议:关注客户端与服务器之间数据传输是否成功TCP三次握手和四次挥手:2.HTTP协议:是在TCP/IP协议之上封装的一层协议,首先关注数据传输是否成功,然后关注数据传输的格式是否规范;例如:对于浏览器来说需要要求不同服务器发送的响应数据格式必须一致,对于服务器来说需要要求不同浏览器发送的请求数据的格式必须一致。HTTP URL格式如下所示:http://host[":"port][

2017-09-09 23:35:27 337

原创 volatile关键字

1.JAVA内存模型 java内存模型规定了所有的变量都储存在主内存中,这里的变量包含:成员变量、静态变量、数组等存在堆中可被共享的元素,但是不包括局部变量和方法参数,因为后者是线程私有的不会被共享,不存在竞争问题。每条线程都有自己的工作内存,线程的工作内存保存了被该线程使用到的变量的主内存副本的拷贝,线程对变量的所有操作(读取、赋值等)都必须工作内存中,而不能直接读写主内存中的变量。不同线程之间

2017-09-03 21:03:55 195

原创 线程同步

在多数线程应用中,两个或两个以上的线程需要共享对同一个数据的存取,如果两个线程存取相同的对象,并且每一个线程都调用了修改该对象的方法,这种情况通常被称为竞争条件。package Thread;class Bank{ public final double[] accounts; public Bank(int n,double initialBlance){ acco

2017-08-20 12:04:02 208

原创 线程的创建、终止

多线程程序在较低的层次上扩展了多任务的概念:一个应用程序同时可以执行多个任务,通常每个任务称作一个线程;例如:一个浏览器可以同时下载几幅图片,一个人web服务器同时处理几个并发请求。线程的创建:class MyThread extends Thread{ public void run(){ task code }}MyThread myThread = new MyThr

2017-08-13 13:32:46 258

原创 RxJava操作符

RxJava操作符类型分为:创建操作符、变换操作符、过滤操作符、组合操作符、错误处理操作符、条件和布尔操作符、算术和聚合操作符及连接操作符等,官方文档:http://reactivex.io/RxJava/javadoc/1.创建操作符:create、just、from、defer、range、interval、start、repeat、timer等 Interval操作符返回一个Observ

2017-08-06 16:56:26 313

原创 RxJava基本用法

说到异步操作,通常Android会使用Handler和AsyncTask,但是随着请求的数量越来越多,逻辑越来越复杂,RxJava依然能保持比较清晰的逻辑。RxJava就是创建一个Observable对象,通过各种操作符把想要处理的数据加工成想要的成品,然后发射给Subscriber。使用前在Android Studio配置gradle compile 'io.reactivex:rxandroid

2017-07-23 18:03:37 558

原创 AsyncTask

AsyncTask是一个抽象的泛型类,它提供了三个参数。其中Params表示在执行AsyncTask时所需要输入的参数类型例如:URL类型,Progress表示后台任务执行的进度的类型例如:Integer,Result表示后台任务的返回结果的类型例如:Boolean,如果不需要传入具体参数则都可以使用Void代替。public abstract class AsnycTask<Params,Prog

2017-07-09 22:55:26 251

原创 线程池

1.什么情况使用线程池通常需要执行多个任务,每个任务的执行时间比较短。例如:listView,GridView,RecyclerView等,每个子条目进入到屏幕时会执行一个任务为子条目进行赋值,当进行滑动同时有多个子条目进入屏幕,每个子条目的具体内容需要网络请求,这时就需要使用线程池进行请求。

2017-06-07 15:02:32 358

原创 Android 照片墙功能实现

1.图片压缩:package com.example.imageloader;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.util.Log;import java.io.FileDescriptor

2017-05-30 01:05:31 2505

原创 LruCache

当应用程序UI界面需要显示大量的图片,比如:使用ListView, GridView 或者 ViewPager 这样的组件,随着滑动屏幕图片不断增加,最终会导致OOM,原因如下:1.Android虚拟机默认为每个App分配16MB的内存空间,不同的真机厂商可以对此值进行设置; 2.Android 系统在加载图片时是解析每一个像素的信息,再把每一个像素全部保存至内存中; 3.一张图片(BitMap

2017-05-26 17:51:10 371

Retrofit2基本使用

Retrofit2基本使用,参数注解的基本使用,Path、Field、FieldMap、Body、Part、partMap、Query、QueryMap

2017-10-20

ImageLoader

照片墙

2017-05-31

Retrofit文件下载进度监听

Retrofit大文件下载进度监听, , , , ,

2017-10-22

oKHttp基本用法

okHttp的get同步异步请求,post上传键值对、JSON、文件

2017-10-03

AsyncTask文件下载

AsyncTask 下载大文件

2017-07-16

oKHttp封装2

get请求和post请求,上传文件和下载文件时返回进度,返回的JSON数据转化成实体对象,访问服务器是异步请求,将请求结果回调到主线程

2017-10-18

空空如也

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

TA关注的人

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