自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (2)
  • 收藏
  • 关注

原创 13 - 将Kotlin协程与架构组件一起使用

将Kotlin协程与架构组件一起使用文章目录将Kotlin协程与架构组件一起使用添加KTX依赖项生命周期感知型协程范围ViewModelScopeLifecycleScope暂停生命周期感知型协程将协程与LiveData一起使用其他资源示例博客Kotlin 协程提供了一个可供您编写异步代码的 API。通过 Kotlin 协程,您可以定义 CoroutineScope,以帮助您管理何时应运行协程。每个异步操作都在特定范围内运行。添加KTX依赖项本主题中介绍的内置协程范围包含在每个相应架构组件的 K

2020-06-22 00:36:23 207

原创 12 - ViewModel的已保存状态模块

ViewModel的已保存状态模块文章目录ViewModel的已保存状态模块设置和使用存储和检索值可接受的类其他资源CodelabViewModel 对象可以处理配置更改,因此您无需担心旋转时或其他情况下的状态。但是,如果您需要处理系统发起的进程终止,则可以使用 onSaveInstanceState() 作为备用方式。界面状态通常在 ViewModel 对象中(而不是 Activity 中)存储或引用;因此,使用 onSaveInstanceState() 时需要该模块可以为您处理的某个样板。模

2020-06-22 00:34:56 297

原创 11-保存状态

保存状态文章目录保存状态用户预期和系统行为用户发起的界面状态解除系统发起的界面状态解除用于保留界面状态的选项使用 ViewModel 处理配置更改使用 onSaveInstanceState() 作为后备方法来处理系统发起的进程终止针对复杂或大型数据使用本地持久性存储来处理进程终止管理界面状态:分而治之恢复复杂的状态:重组碎片其他资源博客未编辑在发生系统发起的 Activity 或应用销毁后,需要及时保存和恢复 Activity 的界面状态,这是用户体验的一个至关重要的部分。在这些情况下,用户希望

2020-06-22 00:33:36 450

原创 10-WorkManager

WorkManager文章目录WorkManager概览使用入门将WorkManager添加到项目中创建后台任务配置运行任务的方式和时间将任务提交给系统后续步骤方法指南定义WorkRequest工作约束初始延迟重试和退避政策定义任务的输入/输出标记工作观察工作状态工作状态观察工作状态观察工作器的中间进度更新进度观察进度将工作链接在一起简介Input Merger链接和工作状态取消和停止工作停止正在运行的工作器处理重复性工作处理唯一作业测试Worker实现测试ListenableWorker及其子类测试Wo

2020-06-20 00:45:28 443

原创 9-ViewModel

ViewModel文章目录ViewModel实现ViewModelViewModel的生命周期在Fragment之间共享数据将加载器替换为ViewModel将协程与ViewModel一起使用更多信息其他资源示例Codelab博客视频ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续存在。在ViewModel之前,面临的问题:如果系统销毁或重新创建界面控制器,则存储在其中的任何临时性界面相关数据都会丢失。对于简单

2020-06-20 00:44:44 138

原创 8-Room持久性库

Room持久性库文章目录Room持久性库概览示例声明依赖项配置编译器选项使用实体定义数据使用主键忽略字段提供表搜索支持支持全文搜索(FTS:Full-text Search)将特定列编入索引添加基于AutoValue的对象定义对象之间的关系定义一对多关系创建嵌套对象定义多对多关系在数据库中创建视图创建视图将视图与数据库相关联使用DAO访问数据自定义方法InsertUpdateDelete查询信息简单查询将参数传递给查询返回列的子集传递参数的集合可观察查询使用RxJava进行响应式查询直接光标访问查询多个表

2020-06-20 00:44:15 223

原创 7-分页库

分页库文章目录分页库声明依赖项概览库架构PageList数据界面支持不同的数据架构网络数据库网络和数据库处理网络错误更新现有应用自定义分页解析使用列表而不是网页加载的数据使用CursorAdapter将数据光标与列表视图相关联使用AsyncListUtil异步加载内容数据库示例使用LiveData观察分页数据使用RxJava2观察分页数据显示分页列表将界面与视图模型关联实现差异回调使用其它适配器类型实现差异回调功能在界面中提供占位符(placeholder)加载分页数据构造可观察列表自定义分页配置选择合适

2020-06-20 00:43:37 139

原创 6-LiveData

LiveData文章目录LiveData优势使用创建观察更新将LiveData与Room一起使用将协程与LiveData一起使用扩展转换创建新的转换 MediatorLiveData合并多个源LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。优势确保界面符合数

2020-06-20 00:42:53 153

原创 5-处理生命周期

处理生命周期文章目录处理生命周期生命周期LifecycleOwner实现自定义LifecycleOwner生命周期感知型组件的最佳做法生命周期感知型组件的用例处理ON_STOP事件androidx.lifecycle 软件包提供了可用于构建生命周期感知型组件的类和接口 - 这些组件可以根据 Activity 或 Fragment 的当前生命周期状态自动调整其行为。 dependencies { def lifecycle_version = "2.2.0" d

2020-06-20 00:35:05 143

原创 4-数据绑定库

数据绑定库文章目录数据绑定库概览1. 开始使用2. 布局和绑定表达式3. 使用可观察的数据对象4. 生成的绑定类5. 绑定适配器将布局视图绑定到架构组件双向数据绑定使用入门布局和绑定表达式数据对象绑定数据表达式语言缺少的运算Null 合并运算符 (??)属性引用避免出现 Null 指针异常集合字符串资源事件处理方法引用监听器绑定避免使用复杂的监听器导入、变量和包含导入变量包含使用可观察的数据对象字段集合对象生成的绑定类创建绑定对象带ID的视图变量ViewStubs即时绑定高级绑定动态变量后台线程自定义绑定

2020-06-20 00:34:18 308

原创 3-视图绑定

文章目录1. 启用1.2 在生成绑定类时忽略某个布局文件2. 用法3. 与 findViewById 的区别4. 与数据绑定库的区别在模块中启用视图绑定之后,系统会为该模块中的每个 XML 布局文件生成一个绑定类。绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用(替代findViewById)。1. 启用## 1.1 可按模块启用。要在某个模块中启用视图绑定,请将 viewBinding 元素添加到其 build.gradle 文件中android { ...

2020-06-20 00:33:30 243

原创 2-向项目添加组件

文章目录声明依赖项Futures(可在 androidx.concurrent 中找到)生命周期组件(包括 ViewModel)导航(包括 SafeArgs)导航Safe ArgsPagingRoomWorkManager打开项目的 build.gradle 文件(而不是应用或模块的该文件)并添加 google() 代码库,如下所示: allprojects { repositories { google() jcenter()

2020-06-20 00:32:28 322

原创 1-概览

Android 架构组件是一组库,可帮助您设计稳健、可测试且易维护的应用。您可以从管理界面组件生命周期和处理数据持久性的类着手。通过应用架构指南,学习有关汇编稳健应用的基础知识。管理应用的生命周期。新的生命周期感知型组件可帮助您管理 Activity 和 Fragment 的生命周期。在配置更改后继续有效、避免内存泄漏,以及轻松加载数据到界面中。使用 LiveData 构建数据对象,在基础数据库改变时通知视图。ViewModel 存储界面相关的数据,这些数据不会在应用轮转时销毁。Room 是一个

2020-06-20 00:31:28 77

原创 单例模式

本文链接地址单例模式一,定义确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例二,目的避免产生多个对象消耗过多的资源。对象被共享,可以节省内存,并加快对象访问速度三,关键点3.1 构造函数不对外开放,一般为Private3.2 通过一个静态方法或者枚举,返回单例类对象3.3 确保单例类的对象有且只有一个,尤其是在多线程环境下3.4 确保单例类在反序列化...

2017-09-07 16:39:33 239

原创 开发遇到的问题集锦

最近在导入Eclipse项目到Android Studio中的时候,出现了如下问题提示:      com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.andro

2017-05-07 11:30:36 335

原创 将Android Studio中项目源码上传到Coding上

Android项目源码通过Git部署到Coding上

2017-03-20 21:56:16 1533

转载 Android ADB命令

你能在本篇文章中收获什么?adb基本指令Shell AM&PMadb模拟用户事件logcat日志常用节点远程ADB常用命令集一. 基本指令进入指定设备 adb -s serialNumber shell查看版本 adb version查看日志 adb logcat查看设备

2017-03-02 19:55:58 1008

原创 android-times-square的使用

本文简单介绍了Square出品的android-times-square的使用。一,在gradle里添加依赖compile 'com.squareup:android-times-square:1.6.5@aar'二,布局文件如下<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

2017-02-08 15:34:24 2591 2

翻译 OkHttp 3 的 Javadoc 翻译

原文地址:      https://github.com/square/okhttp/wiki/Recipes=============================我是华丽丽的分割线=========================================方法我们已经写了一些方法,演示如何解决OkHttp的常见问题。阅读后可以了解如何共同工作。复制和粘贴这些例

2017-02-07 20:00:59 457

原创 在Android Studio中使用JUNIT测试

本文概述的内容:在Android Studio中初步使用JUNIT测试。步骤如下:1,选择你要测试的类中的方法(本文中为TimeUtils中的isToday()方法),如图所示2,在类名TimeUtils上右键,选择Go To > Test,快捷键为Ctrl + Shift + T,如图所示3,然后选择Create New

2017-02-03 14:08:49 13450 8

原创 在Android Studio中生成.h头文件

cd进入到app/src/main/java下然后输入如下命令javah -d ../jni -jni demo.com.hellondk.MainActivity就在jni文件夹下生成了所需头文件ndk { moduleName "audio-decoder" // 你的 ndk 模块名字, JNI调用的时候需要load它 System.loadLibrary(

2017-01-19 13:21:09 1946

原创 判断日期是不是今天/昨天/前天

/** * 格式化时间 * * @param time * @return - 1:昨天;-2:前天;0:今天; -8:默认时间;-7:传入的参数不对 */ private int formatDateTime(String time) { SimpleDateFormat format = new jav

2017-01-19 13:19:45 1516

原创 ViewPagerDemo

MyAdapter如下:package com.example.viewpagerdemo;import java.util.List;import android.support.v4.view.PagerAdapter;import android.view.View;import android.support.v4.view.ViewPager;public clas

2017-01-19 13:17:15 167

原创 ViewPager的两种切换效果

用法: babyrecipe_vp.setPageTransformer(true, new DepthPageTransformer());// babyrecipe_vp.setPageTransformer(true, new ZoomOutPageTransformer()); 两个类分别如下:import android.view.View;

2017-01-19 13:14:44 349

原创 Activity生命周期和onWindowFocusChanged

android四大组件:activity,service,broadcast receiver,content providerActivity:     生命周期          问题1:          当我们在onCreate中调用AnimationDrawable的start方法时,窗口Window对象还没有完全初始化,AnimationDrawab

2017-01-19 13:12:29 205

原创 将字符串时间转为毫秒值

/** * 将字符串格式的时间转为毫秒值 * * @param dateTime * 字符串时间(格式:2015 -12- 31 23:59:53) * @return */ public Long getLongFromString(String dateTime) {

2017-01-19 13:10:57 5155

原创 设置ListView的emptyView

private void setListViewEmptyView (View emptyView ) { if (emptyView == null) { return; } // View emptyView = View.inflate(this, R.layout.emptyview_attend

2017-01-19 13:09:43 227

原创 解决华为手机不显示Log日志

1)进入工程模式 有两种方式可以进入工程模式: a. 在拨号界面输入“*#*#2846579#*#*” b. 若是小米4.0系统(MIUI),进入“设置-->全部设置-->原厂设置-->工程模式”2) 打开Log 1. 依次进入“后台设置-->2.LOG设置-->LOG开关”,选择“LOG打开”;返回上一个界面,点击“LOG级别设置”,选择“VREBOSE”

2017-01-19 13:09:07 13540

原创 网络图片转换成Bitmap

public static Bitmap netImgToBitmap(String url) { URL mUrl = null; Bitmap bitmap = null; try { mUrl = new URL(url); } catch (MalformedURLException e) {

2017-01-19 13:06:11 290

原创 获取视频缩略图

VideoView播放视频获取某一时刻的视频截图,实现如下:需要注意的是setDataSource时,如果是网络视频,需要使用setDataSource(url,HashMap)方法/** * 获取当前videoView截图 */ public static Bitmap getCurrentVideoBitmap(Strin

2017-01-19 13:04:54 1008 1

原创 Android studio中“import org.apache.http.Header;”没用?

Android M 起默认移除了Apache HTTP:https://developer.android.com/intl/zh-cn/preview/behavior-changes.html要使用的话,要这么干1、在gradle-wrapper.properties中配置使用较新版本的gradledistributionUrl=https\://services.gradle.org

2017-01-19 13:03:41 2777

原创 Android studio中“import org.apache.mina.core.session”报错

1,添加以下依赖,重新使用已经deprecated 的apache http 包:android { useLibrary 'org.apache.http.legacy'}2,添加apache http component 的依赖,补全缺失的类,比如Header:dependencies { compile('org.apache.mina:mina-core:2.0.7

2017-01-19 13:01:38 1190

原创 在window下git bash 打印git log出现乱码问题

git config --global i18n.commitencoding utf-8git config --global i18n.logoutputencoding gbkexport LESSCHARSET=utf-8

2017-01-19 13:01:00 541

原创 Android读取Word文档

/*** 读取隐私协议文档内容** @return*/private String showContent() { String content = ""; try { AssetManager manager = getAssets(); InputStream inputStream = manager.open("help.doc")

2017-01-19 12:58:08 3238 6

原创 Sublime Text注册码

Michael BarnesSingle User LicenseEA7E-8213858A353C41 872A0D5C DF9B2950 AFF6F667C458EA6D 8EA3C286 98D1D650 131A97ABAA919AEC EF20E143 B361B1E7 4C8B7F04B085E65E 2F5F5360 8489D422 FB8FC1AA93F6323C

2017-01-19 12:56:51 189

原创 通知栏PendingIntent传递参数始终为null的问题

在接收端,接收的数据一直为null,在google官方网站查了下,发现问题出在flags上:PendingIntent.getActivity原型如下:' PendingIntent.getActivity(context, requestCode, intent, flags) 'flags有四个取值:int FLAG_CANCEL_CURRENT:如果该PendingIntent已经

2017-01-19 12:53:56 1215

原创 使用MediaRecorder进行录音的步骤(初稿)

try { //创建对象 MediaRecorder mediaRecorder = new MediaRecorder(); //设置声音来源 mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); //录制文件的格式 mediaRecorder.setOutputFormat(Me

2017-01-19 12:52:21 413

原创 LogUtils

import android.util.Log;/** * 个人专用 * * @author liubo */public class LogUtils { public static final boolean allow = true; public static void v(String tag, String msg) { if (allo

2017-01-19 12:50:08 201

原创 NetUtils

package com.ddsyapp.cloudteacher.http;import android.content.Context;import android.net.ConnectivityManager;import android.net.DhcpInfo;import android.net.NetworkInfo;import android.net.wifi.Wif

2017-01-19 12:45:11 1347

原创 JavaScript_01基础知识

1. javascript与html结合的方式有2种:     1.1     1.2 2.js中的数据类型     有5中基本数据类型和一种引用类型     基本数据类型:string,number,boolean,undefined,null3. 判断某个变量的数据类型,返回一个字符串     var i=10;     typeof(i)或者typeof  i

2017-01-19 12:42:51 210

第01课丨01数据结构与算法总览.docx

算法训练营 第01课丨01数据结构与算法总览.docx 内容自己下载后仔细观看

2020-06-20

tm-extractors

虽然很不喜欢设置资源分,但是有总比没有好

2017-01-19

空空如也

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

TA关注的人

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