- 博客(19)
- 资源 (2)
- 收藏
- 关注
原创 解决ConstraintLayout布局时候TextView左边有控件之后设置TextView宽度为wrap_content时,文字会超出屏幕的问题
问题:<TextView android:id="@+id/tv_answer_content_item_answer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_10" android:layout_marginTop="@dim.
2021-07-08 10:38:44
1800
原创 service与IntentService以及Thread的区别
Service缺陷:1.不会启动专门的一条线程, service和他所在的应用位于同一进程中2.servi也不是专门一条新线程, 不应该在service中直接处理耗时的任务IntentService特征:1.创建独立的worker线程来处理所有的intent请求2.创建独立的worker线程来处理onHandleIntent()方法实现的代码,无需处理多线程问题3.所有请求处理完成后,intentservice会自动停止,无需调用stopself()方法停止service4.为s
2021-07-02 14:57:14
333
原创 kotlin自定义一个简单的CircleView
1.自定义CircleView继承自Viewpackage com.example.myapplication.widgetimport android.content.Contextimport android.content.res.TypedArrayimport android.graphics.Canvasimport android.graphics.Colorimport android.graphics.Paintimport android.util.Attribu.
2021-07-01 11:53:53
336
原创 AsyncTask.横竖屏切换时Activity的生命周期变化
1.横竖屏切换时Activity的生命周期变化。onPause->onSaveInstanceState->onStop->onDestory --------第一阶段->onCreate->onStart->onRestoreInstanceState->onResume -------第二阶段2.AsyncTask使用方法三个参数Params:表示后...
2021-04-28 23:32:03
123
原创 进程和线程理论知识
1.进程与线程一个进程包含多个线程,线程之间共享进程的资源,进程去找操作系统(OS)去申请内存,进程把申请到的内存分派给线程来使用线程是cpu调度的最小单位CPU核心数和线程数的关系:1:2,四核对应8个逻辑处理器,意味着可以同时跑8个线程,但是为什么我们的pc没有运行八个逻辑处理器(线程)就卡死呢,就是因为CPU的时间片轮转机制CPU时间片轮转机制2.并行与并发并行并发:并发的概念一定要有时间单位,时间单位内执行了多少任务多线程的好处:充分利用CPU资源,加快响应用户所用
2021-04-28 23:25:26
114
原创 一个简单的Retrofit实现(注解+动态代理)
项目整体结构自定义WeatherApi类package com.example.lsn_compose.BarryLRetrofit.api;import com.example.lsn_compose.BarryLRetrofit.retrofit.annotation.Field;import com.example.lsn_compose.BarryLRetrofit.retrofit.annotation.GET;import com.example.lsn_compose.B.
2021-04-28 17:03:30
256
原创 关于“The application could not be installed: INSTALL_FAILED_TEST_ONLY“的解决办法
在as项目的gradle.propertity文件中添加:android.injected.testOnly=false
2021-04-26 12:23:45
392
原创 Retrofit+RxJava原理浅析
Retrofit: 核心:返回一个对象 new ISharedListService()动态代理:代理所有的。动态生成一个类:一个你对应的.class文件的对象–>反射 代理的是一个object。看不见的类:代理类拓展类的行为和静态的是一样的 主要方法: invoke。所有对接口类型的方法的调用都会执行到invoke方法里面代理对象在内存中,而不在外存中。看不见的。所有对接口的调用都会去执行到代理类的invoke函数中。一旦访问到了invoke,就形成了一个功能的拦截获取到你所有.
2021-04-23 15:54:01
547
原创 注解和反射的初步应用
元注解注解上的注解:表示朱姐可以用在Java中的任何元素上,诸如:包名,类名,方法名,参数名,成员变量名import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target(ElementType.TYPE)//元注解:注解上的注解@R
2021-04-22 16:27:24
96
原创 ConstraintLayout使用大全
API28文档中的ConstraintLayout相关介绍1.为什么要使用ConstraintLayout在多层LinearLayout嵌套(超过三层)之后,视图的渲染与解析会拖累应用的性能,以往我们会选择使用RelativeLayout,但是如果视图层复杂的话RelativeLayout里面还需要嵌套其他视图,对视图的位置控制起来很麻烦,也不容易进行屏幕适配。所以我们使用ConstraintLayout。因为ConstraintLayout使用起来比RelativeLayout更灵活,性能也更加.
2021-04-16 15:51:42
770
原创 Android Studio 提示“你的主机中的软件中止了一个已建立的连接”问题解决方法
Android Studio在Gradle sync、build、Clean、Rebuild、Run时,提示 “你的主机中的软件中止了一个已建立的连接.”解决方案1如果你是通过第三方软件连接的真机,比如:豌豆荚、应用宝、应用助手等等,那么这种解决方式适合你Win+R , 输入cmd, 输入 netstat -ano|findstr “5037”最后一列就是占用5037端口的进程的PID接着我们Ctrl+Alt+delete进入任务管理器,然后进去详细信息,去PID里面寻找所对应的进程然后把
2021-04-14 11:11:29
4302
4
原创 kolint版本流式布局FlowLayout
流式布局FlawLayout自定义viewpackage com.example.lsn_compose.viewimport android.annotation.SuppressLintimport android.content.Contextimport android.util.AttributeSetimport android.view.Viewimport android.view.ViewGroupimport androidx.core.view.childrenimp
2021-04-14 10:49:24
1050
1
原创 泛型
泛型编译时类型安全检测机制该机制允许程序员在编译时检测到非法的类型本质:参数类型–>所操作的数据类型被指定为一个参数泛型不存在于JVM虚拟机虚拟机在运行期进行检测,如果有异常,就会报异常CastNotException,而泛型将类型检测提前到了编译期作用:增强编译时错误检测,减少因类型问题引发的运行时异常泛型具有更强的类型检测避免类型转换泛型算法,增加代码复用性类、接口、方法//类public class Student<T>{ private T t;
2021-04-12 17:05:52
84
原创 c语言free相关以及字符串数组
if(new_arr){//重新开启的堆空间是成功的 free(new_arr); new_arr = NULL;//为了不出现悬空指针}else{//失败 free(arr); arr = NULL;}free只是清空堆空间,必须将指针指向NULL,不然会chuan变成悬空指针。字符串数组:遇到 ‘\0’’ 才结束,可以改变单个字符的值字符串指针:结尾默认添加 ‘\0’,不能修改单个字符的值,会崩溃------>崩溃的原理:数组在栈区持有静态区域的字符串的拷贝,直接修改的
2021-04-09 10:17:11
1280
原创 关于LitePal插入数据重复的问题解决
其实思路很简单,在你每次保存数据之前,先查询数据库判断该数据是否在数据库中已经存在,如果已经存在和将要存储的数据相同的数据,就对数据库中的数据进行删除,然后再保存该数据,这样就不会有重复的数据。下面给一下代码:Litepal给出的查询操作有三种:1.Song song = LitePal.find(Song.class, id);2.List<Song> allSongs...
2019-05-10 14:34:06
2118
原创 AndroidStudio更新至3.3后variantOutput.getPackageApplication()警告的解决办法
今天更新到Android Studio 3.3后,对应的gradle tools也更新到了3.3.0 dependencies { classpath 'com.android.tools.build:gradle:3.3.0' classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.13'...
2019-01-23 16:35:20
8313
原创 如何使用ConstraintLayout
API28文档中的ConstraintLayout相关介绍1.在多层LinearLayout嵌套(超过三层)之后,视图的渲染会拖累应用的性能,以往我们会选择使用RelativeLayout,但是如果视图层复杂的话RelativeLayout里面还需要嵌套其他视图,对视图的位置控制起来很麻烦,也不容易进行屏幕适配。所以我们使用ConstraintLayout。因为ConstraintLay...
2019-01-22 23:35:36
247
原创 Android开发之弹出菜单
PopupMenu.OnMenuItemClickListener主要有两个公用方法:1. public static interface PopupMenu.OnMenuItemClickListener 2.android.widget.PopupMenu.OnMenuItemClickListener一般常用的是第二个,但是如果item本身没有单独的itemClickListen...
2019-01-17 15:55:34
933
转载 欢迎使用优快云-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2016-12-22 17:12:30
173
Kotlin官方参考文档中文版
2019-01-23
安卓权威编程指南
2019-01-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人