
笔记
文章平均质量分 81
3Blue1Red
=-=
展开
-
Java 动态代理学模式习与分析
预备知识:反射、静态代理模式由于静态代理的缺陷,我们要手动为每一个目标类编写对应的代理类。如果当前系统已经有成百上千个类,这会使得工作量成倍增加。一、动态代理使用1. 基本了解动态代理和静态代理角色一样。动态代理的代理类是动态生成的,不是我们直接写好的。动态代理分为两大类:基于接口的动态代理,基于类的动态代理。以下使用的是基于接口的JDK动态代理。使用前我们需要大概了解两个类,Proxy 类和 InvocationHandler 类。Proxy 类中有一个 newProxyInsta原创 2021-05-17 16:55:57 · 203 阅读 · 0 评论 -
Android框架 使用DataBinding绑定View
数据绑定库是一个 Android Jetpack 库,它允许您使用声明性格式而不是通过编程方式将XML布局中的UI组件绑定到应用程序中的数据源,从而减少了样板代码。dataBinding 可以很好的和 View Model 配合使用。这里就简单学习一下 dataBinding 防止碰到的时候看不懂。原创 2021-05-11 17:46:35 · 2033 阅读 · 1 评论 -
Android控件 自定义Spinner微调框
一、使用 XML 代码设置 Spinner在 values 文件夹中创建 array.xml 文件<resources> <string-array name="spinner_array"> <item>请选择</item> <item>动作</item> <item>科幻</item> <item>冒险</item原创 2021-01-17 19:42:55 · 756 阅读 · 0 评论 -
Android框架 使用ViewBinding和ButterKnife
ButterKnife 10.2.3 Github 网站:https://github.com/JakeWharton/butterknife进入 github 网站就可以看到:Attention: This tool is now deprecated. Please switch to view binding. Existing versions will continue to work, obviously, but only critical bug fixes for integrati原创 2021-01-16 16:48:23 · 1074 阅读 · 0 评论 -
Android数据库 GreenDao简单使用
一、GreenDao 简介Android 平台的对象关系映射工具(ORM)为关系型数据库提供面向对象的接口简化数据库操作所谓ORM框架,即Object Relational Mapping,它的作用是在关系型数据库和对象之间作一个映射。这样在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了。个人觉得Jetpack的Room更好用一些。1. GreenDao 的核心概念某实体类 -> 某表持久对象,通常实体是使用标准 Java 属原创 2020-12-30 16:16:53 · 610 阅读 · 1 评论 -
Android框架 使用Glide加载图片
Glide很好用很好用很好用很好用很好用。一、原生代码加载图片对比使用URLConnection配合Hanlder加载图片。1. 申请网络权限<?xml version="1.0" encoding="utf-8"?><network-security-config> <base-config cleartextTrafficPermitted="true"/></network-security-config> <uses-pe原创 2020-12-25 18:24:04 · 651 阅读 · 0 评论 -
Android控件 RecyclerView基本使用/常见问题
RecyclerView 很强大很好用,直接开整。一、RecyclerView 准备工作Gradle 中引入 dependencies 闭包dependencies { implementation 'androidx.recyclerview:recyclerview:1.1.0'}修改 activity_main.xml,配置按键 和 RecyclerView 控件 layout<?xml version="1.0" encoding="utf-8"?><Li原创 2020-12-25 14:19:56 · 663 阅读 · 0 评论 -
Java多线程 基础学习笔记/静态代理模式
一、线程简介1. 任务,进程,线程,多线程进程说起进程就不得不说下程序。程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程则是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位。线程通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程是CPU调度和执行的的单位。多任务现实中太多这样同时做多件事情的例子了,看起来是多个任务都在做,其实本质上我们的大脑在同一时间依旧只做了一件事情。多线程原来是一条路,慢慢因为车太原创 2020-12-22 20:39:57 · 298 阅读 · 0 评论 -
Java Lambda表达式学习笔记
一、Lamda表达式Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。λ希腊字母表中排序第十一位的字母,英语名称为Lambda其实质属于函数式编程的概念(params) -> expression [表达式](params) -> statement [语句](params) -> { statements }例如:new Thread ( () ->原创 2020-12-18 17:56:08 · 265 阅读 · 1 评论 -
Android网络 Retrofit简易用法
一、简介及使用前配置Retrofit 是对 OkHttp 的封装,是主流的网络框架。Retrofit Github 主页:https://github.com/square/Retrofit使用 Retrofit 学习常见的网络请求GET 请求普通 POST form 请求Content- Type: application/x-www-form-urlencoded支持文件上传的 POST form 请求Content-Type: multipart/form-data; boundar原创 2020-12-07 23:48:05 · 980 阅读 · 1 评论 -
Android多线程 AsnycTask异步任务类使用
一、AsnycTask的使用:1.定义AsyncTask异步任务类,比Handle更轻量级,更适合简单的异步操作。内部封装了Handle,在使用AsyncTask类进行刷新控件的刷新操作时,不用再额外创建声明Handle,可以直接使AsyncTask内部封装好的几个方法实现。2.同步和异步的区别同步:当我们执行某个功能时,在没有得到结果之前,这个调用就不能返回!简单点就是说必须等前一件事做完才能做下一件事;举个简单的例子:比如你啪啪啪,为了避免弄出人命,肯定要先戴好套套,然后再啪啪啪是吧~套套戴好,原创 2020-11-12 16:59:00 · 371 阅读 · 0 评论 -
Android本地存储 SharePreference和读取设备内外数据
Android常用数据存储1.SharedPreferences存储数据SharedPreferences用于存放一-些类似登录的配置信息本质上是一个xml文件,是通过类似键值对的方式存放信息位于程序私有目录中,即data/data/[packageName]/shared_ prefsSharedPreferences操作模式MODE_ PRIVATE: 私有方式存储,其他应用无法访问MODE_ WORLD_ READABLE:可被其他应用读取MODE_ WORLD_ WRITEAB原创 2020-10-16 02:12:37 · 1079 阅读 · 0 评论 -
Adnroid组件 Activity数据传递/DialogActivity使用
一、Activity Dialog 概述在使用 Dialog 时,如果需要用到很多自己设计的控件,虽然可以让弹出框显示出我们需要的界面,但却无法找到地方完成控制代码的编写,如何解决这个问题呢,我们可以将Activity伪装成Dialog弹出框,这样既显示了界面,又可以在Activity里写控制代码。这就是DialogActivity。默认情况下,一个 Activity 占据整个屏幕。然而,可以为一个 Activity 设置一个“对话框”主题,这样它就能像一个浮动的对话框显示出来了。举个例子,你可能想要把原创 2020-10-03 00:42:51 · 2600 阅读 · 1 评论 -
Android组件 Activity的显式启动与隐式启动详解
显式启动:显式启动比较简单,首先创建一个Intent,指定应用程序上下文和需要启动的Activity,然后调用startActivity来启动新的Activity。<!--AndroidManifest.xml--><activity android:name=".SecondActivity"></activity>//启动ActivityIntent it = new Intent(this, SecondActivity.class);startAct原创 2020-10-02 19:25:23 · 4211 阅读 · 0 评论 -
Android组件 Activity的生命周期详解
Activity类中定义了七种回调方法:1.onCreate()活动第一次被创建的时候调用。主要进行一些初始化的操作2.onStart()在活动从不可见到可以看见的时候调用3.onResume()在活动准备好与用户交互的时候调用,此时活动一定位于栈顶4.onPause()系统准备启用或者恢复另一个活动的时候调用,通常在这个方法中将消耗的CPU资源释放,保存数据5.onStop()在活动完全看不见的时候调用,而onPause(),在活动处于暂停状态也会调用,6.onDestroy()在原创 2020-10-01 17:53:55 · 201 阅读 · 0 评论 -
Java 强引用和弱引用及Handler内存泄漏问题
Java中的强引用和弱引用一、概述众所周知, Java中是由JVM负责内存的分配和回收,它的优点是使用方便, 程序员不用再像使用那样操心内存,但同时也是它的缺点,不够灵活。为了解决内存操作不灵活这个问题,可以采用弱引用等方法。在JDK1.2以前的版本中,当-个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。但有时候情况并不这么简单,你可能会遇原创 2020-09-28 18:06:26 · 671 阅读 · 0 评论 -
Android多线程 Handler简单使用
使用Handler来更新UI:Handler是Android提供用于更新UI的一套消息处理机制。主要作用有两个:在新启动的线程中发送消息在主线程中获取并处理消息//1.实例化 Handler//2.在子线程中发送空消息//3.Handler对象接受消息,并处理private Handler handler = new Handler() { //只要Handler发了消息,必然会触发该方法,并且传入一个Message对象 @Override public void原创 2020-09-22 12:36:07 · 534 阅读 · 0 评论 -
Android解析网络数据 JSONObject与GSON
文章底部为测试使用的JSON字符串获取方法。使用JSONObject处理网络数据JSON使用格式如下,使用逗号分隔:JSON 键值对 “key” : “value” ,JSON 对象 {…} ,JSON 数组 […] ,主要使用方法:getJSONObject() 获取JSON对象new JSONObject(str) JSON格式要求的字符串,返回一个JSON对象getString() 获取JSON字符串getInt() 获取JSON整型数据下面我们来处理这一段JSON数据,原创 2020-09-18 16:05:02 · 963 阅读 · 0 评论 -
Android网络请求 HttpURLConnection简易用法
想要使用Http协议的Get与Post方法首先需要执行一下两个步骤。1.新建xml文件夹,在此目录下创建网络配置文件:network-security-config.xml<?xml version="1.0" encoding="utf-8"?><network-security-config> <base-config cleartextTrafficPermitted="true"/></network-security-config>原创 2020-09-18 01:31:07 · 497 阅读 · 0 评论 -
Android控件 PopupWindow自定义实现
自定义 popup window 的样式、现实淡入淡出效果以及点击内容的实现。实现效果展示:Step 1 :新建Layout文件,编写想要实现 popup window 的布局样式,以下为参考代码实现:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="ho原创 2020-09-15 01:34:26 · 418 阅读 · 0 评论 -
Android控件 常见的Dialog使用方法
https://blog.youkuaiyun.com/echome123/article/details/24523913?utm_source=blogxgwz3原创 2020-09-14 19:40:21 · 931 阅读 · 0 评论 -
Android控件 常见的Menu使用方法
Android里的选项菜单中的项目将出现在操作栏中,用户通过操作栏右侧的操作或者点击设备,菜单按钮来溢出菜单图标。这里介绍 context menu、popup menu 和 option menu 的实现方法。contextMenu 创建流程 方法一: 1.创建 menu.xml 文件 2.给菜单注册按钮 registerForContextMenu(findViewById(R.id.button_context)); 3.创建菜单 @Override onCreateCont原创 2020-09-13 19:25:03 · 555 阅读 · 0 评论 -
Android组件 Activity启动模式详细图解
Acitvity的启动模式一共有四种:分别是 standard、singleTop、singleTask 和 singleInstance.1.standatd比较简单就是一个进栈出栈的过程。2.singleTop每当想要在启动一个 MainActivity 的时候都会直接使用栈顶的 Activity 因此 MainActivity 只会有一个实例。<activity android:name=".MainActivity" android:label="MainActivity"原创 2020-09-12 17:54:52 · 255 阅读 · 0 评论 -
Java for(int i : arr)、for-each、list.Each()遍历数据
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。Java5 引入了一种主要用于数组的增强型 for 循环。for(声明语句 : 表达式) { //代码句子 }表达式:表达式是要访问的数组名,或者是返回值为数组的方法。这可以直接生成 for 循环便利数组。原创 2020-03-23 16:37:22 · 1559 阅读 · 0 评论 -
Java println()方法为什么会输出hashcode?
println()这个方法为什么会输出hashcode?本篇文章将了解:println()方法的源码,String.valueOf()方法的重载,toString()方法的源码。首先我们要知道,任何类的都继承自Object类,也就都集成了Object类中的toString()方法。那么println()这个方法是如何调用toString()方法的呢?大概流程如下:在这里插入代码片...原创 2020-03-17 20:24:53 · 925 阅读 · 0 评论