自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 资源 (5)
  • 收藏
  • 关注

原创 JetPack之Lifecycle

为什么要使用Lifecycle?如果在Activity或者Fragment生命周期中做了很多操作,代码看起来特别多,Activity或者Fragment看起来特别的臃肿,为了解决这样的代码臃肿,Lifecycle把这些生命周期的操作拿了出来,新建了一个类去维护生命周期里的逻辑。首先看一下代码的具体实现本地的依赖dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) implementat

2020-12-31 11:41:02 242

原创 Android 引起内存泄漏的几种情况

概述内存泄漏是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成内存空间的浪费称为内存泄漏。内存泄露有时不严重且不易察觉,这样开发者就不知道存在内存泄露,但有时也会很严重,会提示你Out of memory。首先使用leakcanary来检测内存泄漏debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.5'使用当前版本的leakcanary无需install直接可以使用(下一篇文章.

2020-12-11 18:01:38 7135 3

原创 异常 Program type already present: android.support.v4.app.INotificationSideChannel$Stub$Proxy

当前环境:apply plugin: 'com.android.application'android { compileSdkVersion 29 defaultConfig { applicationId "com.wanzi.designmode" minSdkVersion 16 targetSdkVersion 29 versionCode 1 versionName "1.0"

2020-12-30 15:36:00 1546

转载 Android Jetpack架构组件(一)带你了解Android Jetpack

前言Android已经发展了11年,可以说是比较成熟的技术了,一开始时框架很少,也没有什么规范,所有的代码都是要自己写,比如网络请求,数据库请求,数据解析等等。后来出现了一些框架来帮助开发者快速进行开发,比如XUtils、Volley、OKHttp、EventBus等,随着框架越来越多,一个应用可以有多种技术选型,直接导致应用开发越来越不规范,导致做出来的应用质量参差不齐,这显然不是谷歌想看到的。谷歌随后推出了MVP和MVVM相关的官方例子,效果很一般,而且覆盖面只是在架构上,Goole I/O 201

2020-12-25 15:13:07 196

原创 LeakCanary(2.0版本之前)的使用及其原理

概述leakcanary是一个监测android和java内存泄漏的工具。他能够在不影响程序正常运行的情况下,动态收集程序存在的内存泄漏问题。大体流程Activity Destory之后将它放在一个WeakReference 这个WeakReference关联到一个ReferenceQueue 查看ReferenceQueue是否存在Activity的引用 如果该Activity泄漏了,Dump出heap信息,然后再去分析泄漏路径。引用类型强引用(StrongReferenc

2020-12-15 14:36:54 715

原创 JAVA知识点—垃圾回收机制GC

概述垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。()内存泄露:ML (Memory Leak),程序在向系统申请分配内存空间后(new),在使用完毕后未释放。结果导致一直占据该内存单元,我们和程序都无法再使用该内存单元,直到程序结束,这是内存泄露。内存溢出:OOM(Out of Memory),程序向系统申请的内存空间超出了系统能给的。比如内存只能分配一

2020-12-08 14:14:48 568

原创 JAVA知识点—JVM的工作原理和类加载机制

JVM工作流程开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件),再然后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的转换成机器码执行。运行时数据区区域 说明 程序计数器 每条线程都需要有一个程序计数器,计数器记录的是正在执行的指令地址,如果正在执行的是N...

2020-12-04 14:27:46 165

转载 Binder(初始篇)

红茶一杯话Binder(初始篇)1 什么是Binder? 简单地说,Binder是Android平台上的一种跨进程交互技术。该技术最早并不是由Google公司提出的,它的前身是Be Inc公司开发的OpenBinder,而且在Palm中也有应用。后来OpenBinder的作者Dianne Hackborn加入了Google公司,并负责Android平台的开发工作,所以把这项技术也带进了Android。 我们知道,在Android的应用层次上,基本...

2020-12-01 16:04:07 316

网络获取json解析json以及子线程显示

import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.StaggeredGridLayoutManager; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import org.json.JSONArray; import org.json.JSONObject; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.StringReader; import java.lang.reflect.Type; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.SAXParserFactory; import okhttp3.Call; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class MainActivity extends AppCompatActivity implements View.OnClickListener { RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button sendRequest = (Button) findViewById(R.id.send_request); sendRequest.setOnClickListener(this); recyclerView = (RecyclerView) findViewById(R.id.recycler_view); StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); recyclerView.setLayoutManager(layoutManager); } @Override public void onClick(View v) { if (v.getId() == R.id.send_request) { // sendRequestWithHttpURLConnection(); sendRequestWithOkHttp(); /* String url = "http://cache.video.iqiyi.com/jp/avlist/202861101/1/?callback=json

2018-12-17

SequencePlugin-1.3.0.zip

生成简单序列图。 单击图形形状来导航代码。 从图中删除类。 将图表导出为图像。 通过“设置”>“其他设置”>“序列”从图表中排除类 智能接口(实验)

2019-11-26

通过LitePal保存集合到本地(可增删改查)

通过LitePal保存集合到本地(可增删改查) compile 'org.litepal.android:core:1.3.2' 第一步建立 Connector.getDatabase(); 保存: Book book = new Book(); book.setName("The Da Vinci Code"); book.setAuthor("Dan Brown"); book.setPages(454); book.setPrice(16.96); book.setPress("Unknow"); book.save(); 更新: Book book = new Book(); book.setPrice(14.95); book.setPress("Anchor"); book.updateAll("name = ? and author = ?", "The Lost Symbol", "Dan Brown"); 删除: DataSupport.deleteAll(Book.class, "price < ?", "15"); 查询: List<Book> books = DataSupport.findAll(Book.class);

2018-12-17

EventBus.jar

EventBus 资源包 一个包

2019-07-17

支持三角形布局,两层波浪waveView,自动轮播,NavigationTabBar

主要支持三角形布局,两层波浪waveView,自动轮播,NavigationTabBar

2018-12-26

空空如也

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

TA关注的人

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