今天发现自己连Bundle类都没有搞清楚,于是花时间研究了一下。...依据google官方的文档(http://developer.android.com/reference/android/os/Bundle.html) Bundle类是一个key-value对,“A...类继承关系: java.lang.Object android.os.Bundle Bundle类是一个final类: public final class Bundle extends...android:minSdkVersion="7" /> 两个类例如以下:intent从TestBundle类发起,到Target类。...类1:TestBundle类: import android.app.Activity; import android.content.Intent; import android.os.Bundle
---- 上一篇文章 自定义ClassLoader和双亲委派机制 讲述了 JVM 中的类的加载机制,Android 也是类 JVM 虚拟机那么它的类加载机制是什么呢,我们来探究一下(PS:文章源码为 Android5.1...前言 Android 的 Dalvik 虚拟机和 Java 虚拟机的运行原理相同都是将对应的 java 类加载在内存中运行。...dex 在 Android 中的加载和 class 在 jvm 中的相同都是基于双亲委派模型,都是调用ClassLoader 的 loadClass 方法加载类。...Android系统中的类加载器 Android 系统屏蔽了 ClassLoader 的 findClass 加载方法,那么它自己的类加载时通过什么样的方式实现的呢?...Android 系统中有两个类加载器分别为 PathClassLoader 和 DexclassLoader。
为了节约资源,现在很多 app 采用了 replace() 方法来实现碎片的切换,但是在这种情宽下,如果不讲之前的碎片雅茹栈中,就无法避免之前碎片回随之销毁,所以我们采用 hide() 和 show(...实现效果 效果图项目地址--https://github.com/FishInWater-1999/android-SignInSystem ---- 这里不讲废话直接给出最佳方案 首先,定义四个成员...private Fragment mContent = new Fragment();// 记录下当前碎片 由于替换 private Fragment mPerson; private Fragment...(mContent).add(R.id.fragment, to).commit(); } else { // 隐藏当前的fragment,显示下一个...= to; } } ---- 完整代码地址 --> 点击跳转-- https://github.com/FishInWater-1999/android-SignInSystem
ViewModel 具有生命周期意识,会自动存储和管理 UI 相关的数据,即使设备配置发生变化后数据还会存在,我们就不需要在 onSaveInstanceState 保存数据,在 onCreate 中恢复数据了...ViewModel 中的方法了,前面跟源码的时候会遇到各种封装类,如 ViewModelStore、ViewModelStoreOwner、AndroidViewModelFactory 等,下文中将会介绍...应该和旧的 ViewModelStore 一样保存对应 ViewModel 的所有信息,只有调用了对应的 clear() 方法才会通知这个 ViewModel 不在使用,其对应的 ViewModelStore...,实际上像 FragmentActivity 、Fragment 等都间接或直接实现了这个接口,这一点和 LifecycleOwner 一样,源码参考如下: Activity 间接实现: ```java...每个 Fragment 都有自己的生命周期,可以随意替换和移除都不会互相影响另一个 Fragment 的正常工作。
ServletConfig 类 ServletConfig 类从类名上来看,就知道是 Servlet 程序的配置信息类。...Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责创建,我们负责使用。...ServletConfig 类的三大作用 1、可以获取 Servlet 程序的别名 servlet-name 的值 2、获取初始化参数 init-param 3、获取 ServletContext...--servlet-name标签给Servlet程序起一个别名(一般是类名)--> HelloServlet 类名--> com.kailong.servlet.HelloServlet</servlet-class
python 类和元类详解 小麦麦子 2016-09-06 11:11:00 今天在网上看到一篇关于python语言中类和元类(metaclass)的一些讲解和简单运用,感觉对python...type(类名, 父类的元组(针对继承的情况,可以为空),包含属性的字典(名称和值)) 这个怎么用呢,我要用这个方法创建一个类 让我们看下下面的代码 input: print type('trick...使用type创建一个类赋值给pw type的接受的三个参数的意思分辨是(类的名称, 类是否有父类(), 类的属性字典{}) 这里初始化一个类的实例,然后尝试去获得父类的laugh_at属性值,然后得到结果...就是元类type了 (二) 什么是元类以及简单运用 这一切介绍完之后我们总算可以进入正题 到底什么是元类?通俗的就是说,元类就是创建类的类。。。这样听起来是不是超级抽象?...什么是元类刚才说了,元类就是创建类的类。也可以说他就是一个类的创建工厂。 类上面的__metaclass__属性,相信愿意了解元类细节的盆友,都肯定见过这个东西,而且为之好奇。
前言 本文是深入理解「Android Architecture Components」系列文章第四篇 源码基于 AAC 1.1.1 版本 【AAC 系列一】Android 应用架构新时代来临!...ViewModel 的基本使用 ViewModel 的使用也非常简单,Android 提供了一个 ViewModel 类让我们去继承,并且提供了 ViewModelProviders 来帮助我们实例化...这里传入了一个 通过 ViewModelStores 类创建的 ViewModelStore,并且传入了 fragment,一定有蹊跷。...(又是 Fragment!) 5. 图解 ViewModel ViewModel 重点类类图: ? ViewModel原理实现序列图: ? 6....知识点梳理和汇总 重点类讲解: ViewModel ,抽象类,用来负责准备和管理 Activity/Fragment 的数据,并且还能处理 Activity/Fragment 跟外界的通信,通常还存放业务逻辑
ViewModel 和 LiveData 是 Android Jetpack 组件库中的两个核心组件,它们能帮助开发者更有效地管理 UI 相关的数据,并且能够在配置变更(如屏幕旋转)时保存和恢复 UI...ViewModel作用 瞬态数据丢失的恢复,比如横竖屏 异步调用的内存泄漏 处理类膨胀提高维护难度和测试难度 使视图和数据能够分离 是介于视图View和数据Model之间的桥梁 LiveData的作用...创建 ViewModel 类 ViewModel 用于存储和管理与 UI 相关的数据,它能在配置变更时继续存在。...在 Fragment 中使用 ViewModel 如果在 Fragment 中使用 ViewModel,可以使用 viewModels 或 activityViewModels: import android.os.Bundle...Lifecycle Jetpack 组件中的 Lifecycle 是一个用于管理和观察 Android 组件(如 Activity、Fragment)生命周期的库。
Android SharedPreferences工具类 新建一个SpUtil工具类 /** * Created by xpf on 2017/03/25 :) * Function: sp存储的工具类
xiaogang.enif.utils.IOUtils; import xiaogang.enif.utils.LogUtils; import xiaogang.enif.utils.LruCache; import android.app.ActivityManager...; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory...; import android.graphics.BitmapFactory.Options; import android.graphics.Canvas; import android.graphics.drawable.BitmapDrawable...; import android.os.AsyncTask; import android.text.TextUtils; import android.util.AttributeSet; import...android.widget.ImageView; public class CacheView extends ImageView { private static final int DEFAULT_RES_ID
此时,借鉴后端的后端程序的开发思路,我们对Android项目进行了分层,典型的有MVC,MVP和MVVM等项目分层,然后每层负责自己的事情即可。以现在流行的MVVM模式为例。...Model层:数据层,主要负责数据实体和对数据实体的操作。 View层:视图层,对应Android的Activity、Fragment和View等,负责数据的显示以及与用户的交互。...在Android中,Activity/Fragment主要用于显示视图数据,如果它们也负责数据库或者网络加载数据等操作,那么势必造成代码臃肿,而将逻辑代码放到ViewModel之后,可以更有效的将视图数据相关逻辑和视图控制器分离开来...源码 ViewModel类是一个抽象接口,其部分源码如下。...除此之外,Android的Activity类还提供了onRetainNonConfigurationInstance和getLastNonConfigurationInstance两个方法,当设备状态发生改变时
解析动作主要针对类或接口、字段、类方法、接口方法、方法类型、方法句柄和调用点限定符 7 类符号引用进行 初始化 到初始化阶段,才真正开始执行类中定义的 Java 程序代码,此阶段是执行 ...类加载的时机 虚拟机规范规定了有且只有 5 种情况必须立即对类进行“初始化”(而加载、验证、准备自然需要在此之前开始) 遇到new、getstatic 和 putstatic 或 invokestatic...类的唯一性 对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性。...,是不对的),用于加载一些系统Framework层级需要的类,是Android平台上所有的ClassLoader的最终parent SecureClassLoader扩展了ClassLoader类,加入了权限方面的功能...,加强了安全性 URLClassLoader继承SecureClassLoader,用来通过URI路径从jar文件和文件夹中加载类和资源,在Android中基本无法使用 BaseDexClassLoader
从图可以看出来,ViewModel 与 LiveData 和 Paging 是谷歌新组件,同时它是 android.arch.lifecycle 包里面的类,可以支持 activity 和 fragment...使用方法 //build.gralde implementation 'android.arch.lifecycle:extensions:1.1.1' //包括了 viewmodel 和 livedata...:1.1.1' 创建一个类传字符串,然后在 activity 实例化并且赋值。...get方法来获取viewmodel,从下面的的 get 方法可以看到 hashmap 的 key 是由DEFAULT_KEY 前缀和的 viewmodel 的 canonicalName 来组成。...可以创建多个 viewmodel,而 activity 和 fragment 中 holderfragment 只有一个。
前言 上一篇介绍了 ardf(android rapid development framework,Android 快速开发框架) 基于 DataBinding 对 RecyclerView 的封装实现和使用...使用效果 在 Android 应用中页面显示几乎是每个应用必不可少的功能,要让页面布局在手机上进行显示绝大多数情况都是使用 Activity/Fragment 来承载;而创建一个 Activity/Fragment...需要先加载布局,然后从布局中找到我们需要的 View 对象再去更新其数据或为其添加相应事件处理,那么如果将这些封装成通用的 Activity/Fragment 基类则将减少很多开发代码从而提高开发效率...和 koin 库,用于数据绑定和依赖注入。...• 基础支撑:封装工具类、扩展和事件的 Model 及接口。
Android 还可以通过 JNI 来调用 Java 一个类的构造方法,从而创建一个 Java 类。 调用构造方法 调用构造方法的步骤和之前调用类的实例方法步骤类似,也需要获得对应的类和方法 id。...env->DeleteLocalRef(stringClass); return result; } 由于 String 的构造函数需要传递一个字符数组,就先构造好了字符数组并赋值,得到对应的类和方法...首先,构造一个相应的子类,然后获得父类的 类型和方法 id,以及准备对应的参数,根据父类方法的返回值选择调用不同的 CallNonvirtualMethod 函数。...getName 参数 jclass animal_cls; // 父类的类型 jmethodID animal_mid; // 被调用的父类的方法 id // 获得父类对应的类...Animal 类的子类,首先由 NewObject 方法创建 Cat 类,然后调用它的父类的方法。
文章目录 一、Activity 遇到的问题 二、视图 View 和 数据模型 Model 三、ViewModel 架构组件作用 四、ViewModel 代码示例 1、ViewModel 视图模型 2...视图模型 ViewModel 视图模型 继承 androidx.lifecycle.ViewModel 类 , 在其中定义要维护的数据即可 ; 代码示例 : package kim.hsl.viewmodeldemo...Activity 组件 在 Activity 中 , 要 绑定 ViewModel 组件 , 通过 ViewModelProvider 获取 MyViewModel::class.java 类 对应的...Activity 或 Fragment 之间共享数据 ; ViewModel 的 生命周期 : 一个 ViewModel 实例对象 可以与 多个 Activity 或 Fragment 绑定 ; 创建..., 否则会导致内存泄漏 ; 如果要使用 Context 上下文对象 , 则 ViewModel 需要继承 AndroidViewModel 类 , 在 其构造函数 中获取 Application 对象
类索引和父类索引 类索引(this_class)和父类索引(super_class)都是一个u2类型的数据,类索引用于确定这个类的全限定名,父类索引用于确定这个类的父类全限定名。...类索引和父类索引各自指向常量池中类型为CONSTANT_Class_info的类描述符,再通过类描述符中的索引值找到常量池中类型为CONSTANT_Utf8_info的字符串。...包括类级变量(静态变量)和实例级变量(成员变量),但是不包括在方法内部声明的局部变量。...具体结构如下表: 字段表中的access_flags,和类的access_flags是非常类似的,但是标识和含义是不一样的。具体如下表: 这里提到了简单名称、描述符,和全限定名有什么区别呢?...简单名称是没有类型和参数修饰的方法或字段名称,比如OneMoreStudy类中的number字段和plusOne()方法的简单名称分别是“number”和“plusOne”。
5.1 类、超类和子类 子类比超类拥有的功能更加丰富。 在本例中,Manager类比超类Employee封装了更多的数据,拥有更多的功能。 ...从超类中还继承了name、salary和hireDay这3个域,所以现在就有了4个域(由于增加了bonus域)。 ...例如可能存在方法f(int)和f(Stirng),编译器会一一列举所有C类中名为f的方法和其超类中访问属性为private且名为f的方法(超类的私有方法不可访问)。...5.1.4 阻止继承 final类和方法 有时候,可能希望组织人们利用某个类定义子类,不允许扩张的类称为final类,如果在定义类的时候使用了final修饰符就表示这个类是final类。 ...例如,Person类还保存着姓名和一个返回姓名的具体方法。
1.什么是基类? 在面向对象设计中,被定义为包含所有实体共性的class类型,被称为“基类”。-百度百科 简单理解,即父类(相对派生类) 2.什么是派生类? ...利用继承机制,新的类可以从已有的类中派生。那些用于派生的类称为这些特别派生出的类的“基类”。 简单理解,即子类(相对基类) 3.两者关联 基类和派生类是一个相对的关系。...基类和派生类反映了类与类的继承关系,是相对而言的。基类又称父类,是被派生类继承的类。派生类又称子类,是从一个已有类的基础上创建的新类,新类包含基类的所有成员,并且还添加了自己的成员。...4.实际例子 假设有两个类A和B,A和B都需要实现一个打印的功能,原始的做法是A写一个打印函数,B也写一个打印函数。两个类还好可以写,但多了就特别麻烦。...这个时候我们就可以写一个类C,C里面写一个打印函数。A和B分别继承C,这样A和B就不要写打印函数了。这样即节省了代码,又优化了结构。 上面的情况,C是A和B的基类,A和B是C的派生类。
领取专属 10元无门槛券
手把手带您无忧上云