- 博客(41)
- 资源 (6)
- 收藏
- 关注
转载 AndroidStudio4.2 右上角Gradle不显示task
参考 Android Studio 的 Gradle Task 没有显示的问题
2021-05-28 15:37:00 1471
原创 Cannot access ‘<init>‘: it is package-private
该错误主要时由于构造方法没有写public例如:public class AchievementMultiBean{ AchievementMultiBean(){}}
2021-05-08 18:44:45 2913
原创 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 747
原创 liveData使用和源码分析
liveData基本使用class ChooseAreaViewModel :ViewModel(){ var provinceLiveData = MutableLiveData<MutableList<Province>>() fun getProvinceList(){ viewModelScope.launch { provinceLiveData.value = PlaceRepository.getProvinceLis
2021-04-16 15:49:21 149
原创 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 109
原创 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 6526
原创 viewModel源码
基本使用:class ChooseAreaViewModel :ViewModel(){ var provinceLiveData = MutableLiveData<MutableList<Province>>() fun getProvinceList(){ viewModelScope.launch { provinceLiveData.value = PlaceRepository.getProvinceList()
2021-04-12 18:22:26 212
原创 android多个依赖库版本冲突
在app模块下build.gradle文件中,设置如下android { ...... //指定依赖库对应得版本 configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested //打印依赖库得组名称
2021-04-07 17:18:24 429
原创 android studio zip file is empty错误
该错误是由于项目使用了HujiangTechnology/gradle_plugin_android_aspectjx库导致,移除该库zip file is empty
2021-03-31 11:59:43 634
原创 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 105
原创 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 51
原创 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 111
原创 Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
gradle报错:解决方案:解决该错误参考连接错误原因是下方格式冒号不对修改成等于号就可以
2021-03-19 16:30:50 7065 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 3377
原创 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 129
原创 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 232
原创 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 40
原创 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 128 1
原创 android studio 项目无法运行 edit configurations为空
替换为项目可以运行的文件若运行报错提示修改为上述替换wrapper文件项目的classPath
2021-02-26 11:37:31 1572
原创 npm清除缓存
命令清除缓存npm cache clean --force,或者删除npm-cache文件,目录为:C:\Users\10133\AppData\Roaming中得npm-cache
2020-10-09 13:44:57 2502
原创 堆排序
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 69 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 56
原创 约瑟夫环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 168
原创 Retrofit下载文件进度
默认情况下,Retrofit在处理结果前会将整个Server Response读进内存,这在JSON或者XML等Response上表现还算良好,但如果是一个非常大的文件,就可能造成OutofMemory异常。因此我们在进行下载大文件时需要使用@Streaming注解,使用@Streaming主要作用是把实时下载的字节就立马写入磁盘,而不用把整个文件读入内存。final ExecutorSe
2017-10-20 13:28:55 1306 1
原创 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 394
原创 oKHttp基本封装
需求:get请求和post请求,上传文件和下载文件时返回进度oKHttpClient实例只创建一次如果用户在结果还未返回时又连续多次请求相同的api,只保留最后一次,前面的中断请求返回的JSON数据转化成实体对象访问服务器是异步请求,将请求结果回调到主线程首先用一个抽象类用于回调public abstract class ResultCallback { public abstr
2017-10-17 15:01:45 227
原创 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 254
原创 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 2271
原创 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 2176
原创 http协议
1.TCP/IP协议:关注客户端与服务器之间数据传输是否成功TCP三次握手和四次挥手:2.HTTP协议:是在TCP/IP协议之上封装的一层协议,首先关注数据传输是否成功,然后关注数据传输的格式是否规范;例如:对于浏览器来说需要要求不同服务器发送的响应数据格式必须一致,对于服务器来说需要要求不同浏览器发送的请求数据的格式必须一致。HTTP URL格式如下所示:http://host[":"port][
2017-09-09 23:35:27 255
原创 volatile关键字
1.JAVA内存模型 java内存模型规定了所有的变量都储存在主内存中,这里的变量包含:成员变量、静态变量、数组等存在堆中可被共享的元素,但是不包括局部变量和方法参数,因为后者是线程私有的不会被共享,不存在竞争问题。每条线程都有自己的工作内存,线程的工作内存保存了被该线程使用到的变量的主内存副本的拷贝,线程对变量的所有操作(读取、赋值等)都必须工作内存中,而不能直接读写主内存中的变量。不同线程之间
2017-09-03 21:03:55 141
原创 线程同步
在多数线程应用中,两个或两个以上的线程需要共享对同一个数据的存取,如果两个线程存取相同的对象,并且每一个线程都调用了修改该对象的方法,这种情况通常被称为竞争条件。package Thread;class Bank{ public final double[] accounts; public Bank(int n,double initialBlance){ acco
2017-08-20 12:04:02 159
原创 线程的创建、终止
多线程程序在较低的层次上扩展了多任务的概念:一个应用程序同时可以执行多个任务,通常每个任务称作一个线程;例如:一个浏览器可以同时下载几幅图片,一个人web服务器同时处理几个并发请求。线程的创建:class MyThread extends Thread{ public void run(){ task code }}MyThread myThread = new MyThr
2017-08-13 13:32:46 174
原创 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 246
原创 RxJava基本用法
说到异步操作,通常Android会使用Handler和AsyncTask,但是随着请求的数量越来越多,逻辑越来越复杂,RxJava依然能保持比较清晰的逻辑。RxJava就是创建一个Observable对象,通过各种操作符把想要处理的数据加工成想要的成品,然后发射给Subscriber。使用前在Android Studio配置gradle compile 'io.reactivex:rxandroid
2017-07-23 18:03:37 465
原创 AsyncTask
AsyncTask是一个抽象的泛型类,它提供了三个参数。其中Params表示在执行AsyncTask时所需要输入的参数类型例如:URL类型,Progress表示后台任务执行的进度的类型例如:Integer,Result表示后台任务的返回结果的类型例如:Boolean,如果不需要传入具体参数则都可以使用Void代替。public abstract class AsnycTask<Params,Prog
2017-07-09 22:55:26 180
原创 线程池
1.什么情况使用线程池通常需要执行多个任务,每个任务的执行时间比较短。例如:listView,GridView,RecyclerView等,每个子条目进入到屏幕时会执行一个任务为子条目进行赋值,当进行滑动同时有多个子条目进入屏幕,每个子条目的具体内容需要网络请求,这时就需要使用线程池进行请求。
2017-06-07 15:02:32 267
原创 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 2420
原创 LruCache
当应用程序UI界面需要显示大量的图片,比如:使用ListView, GridView 或者 ViewPager 这样的组件,随着滑动屏幕图片不断增加,最终会导致OOM,原因如下:1.Android虚拟机默认为每个App分配16MB的内存空间,不同的真机厂商可以对此值进行设置; 2.Android 系统在加载图片时是解析每一个像素的信息,再把每一个像素全部保存至内存中; 3.一张图片(BitMap
2017-05-26 17:51:10 290
Retrofit2基本使用
2017-10-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人