Android中的Intent
显示Intent显示Intent时明确Activity的类名的启动。有3种方法:
Intent(Context packageContext,Class<?> cls) 最常用
12Intent intent = new Intent(this,SecondActivity.class);startActivity(intent)
Intent的setComponent()方法;
1234567ComponentName componentName = new ComponentName(this,secondActicity.class );ComponentName componentName = new ComponentName(this,"com.xx.xx.SecondActivity" );ComponentName componentName = new ComponentName(getPackageName(),"com.xx.xx.SecondActivity" );Intent intent = ne ...
retrofit原理
前言:Retrofit是基于OkHttp封装的一个网络请求框架,既然是OkHttp的上层框架,当然是解决了OkHttp在开发中的一些痛点。具体的来说:
使用过程中接口配置繁琐,OkHttp中每发起一个请求都要新建一个Request,当要配置复杂请求(body,请求头,参数)时尤其复杂。
需要用户拿到responseBody后自己手动解析,解析工作应该是可以封装的。
无法适配自动进行线程切换。
嵌套网络请求会陷入“回调陷阱”
Retrofit基本使用依赖:
123implementation 'com.squareup.retrofit2:retrofit:2.9.0'implementation 'com.squareup.retrofit2:converter-gson:2.9.0'//数据解析(可选)implementation 'com.squareup.retrofit2:adapter-rxjava:2.9.0'//RxJava适配器(可选)
构建接口Service:
1234public interface ...
如何在Android上统一任务计划
如何在Android上统一任务计划
原文由开发工程师Caren Chang发表,此为译文。
Android用户通常会很在意手机的电池寿命。通常,你如何计划调度你app的后台任务,将会对手机电池的使用有着很大的影响。为了帮助你打造对手机电池更友好的app,我们将介绍一个可以满足所有可延迟的后台处理需求的统一解决方案WorkManager。
自2020年11月1日开始,我们就围绕着WorkManager统一了Android的后台延时任务,并且原先的GCMNetworkManager将会被弃用。
为什么是WorkManagerWorkManager API整合了之前的Firebase Job Dispatcher(FJD)和GcmNetworkManager两个方案,提供了一个新的一致性的方案很好的优化了电池使用时长,且兼容到了API14。比如,你有如下需求:当手机正在充电同时连接到WiFi的时候,你的app需要在后台发送日志文件到服务器。这种情况下,WorkManager将会轻而易举的在这种限制下执行。此外,与FJD和GcmNetworkManager不同,它不需要Google Pla ...
Kotlin协程和RxJava在不同业务场景下的使用体验
Kotlin协程和RxJava在不同业务场景下的使用体验虽然协程和RxJava有着不同的设计理念,但他们都不约而同的解决了Java编程中回调地狱的硬伤。这篇文章就带大家尝试在特定业务场景下分别用Kotlin协程和用RxJava,来体验一把两者在代码风格上的差异。
场景一:请求数据到UI线程渲染在Android开发中,由于主线程不能耗时请求,子线程不能更新UI,所以这是一个很常见的业务需求。
RxJava12345678910111213141516171819202122232425fun main() { getUser().observeOn(AndroidSchedulers.mainThread())//指定回调发生在UI线程 .subscribe(Consumer { s -> println("I get RESULT $s,CurrentThread is " + Thread.currentThread().name + "...") ...
Kotlin协程:一个轻量级的线程框架。
Kotlin协程:一个轻量级的线程框架。参考视频,凯哥的Kotlin协程视频入坑三连:概述,挂起,非阻塞式。
如果没有特殊提及,文中所有“协程”均代表“Kotlin协程”,对其他语言并不适用
是什么 - 线程APIKotlin协程是一套由Kotlin官方提供的线程API。
就像Java的Executor和Android的AsyncTask一样,Kotlin的协程也就是对thread相关的api做了一套封装,让我们可以方便的写出并发操作。
方便在哪 - 非阻塞式挂起
非阻塞式:
你可以用看似同步的方式,写出异步的代码。或者说可以把运行在不同线程的代码,写到同一个代码块中,如下:
1234launch(Dispatchers.Main){ val user = api.getUser() //网络请求:后台线程 nameTv.text = user.name //更新UI:主线程}
上面的代码分别运行在两个线程,这在Java中是无法做到的,哪怕你使用RxJava也只能写成这样:
123api.getUser() .observeOn(AndroidS ...
Android保活机制
Android保活机制
市面上没有100%的保活机制,除非手机厂商将该应用设置成为系统白名单(比如微信等)。我们要做的尽可能的提高APP的优先级,尽量避免其被杀死,以及被杀死后如何“复活”。
如何查看app在系统中的优先级12# 这里的11572要改为对应进程的idadb shell cat /proc/11572/oom_adj
获取到的值参考下图:(数字越小,优先级越高)
保活法-提高优先级 目的:尽力去提升进程优先级。
1像素法在监听到手机关闭屏幕时,偷偷创建一个只有1像素的、透明的Activity,让应用成为前台进程,然后再打开屏幕时,关掉这个Activity。
针对锁屏状态下优先级降低的情况。
前台服务保活在启动应用的同时,创建一个前台服务(前台服务的优先级远高于普通服务),然后在该服务中又创建一个前台服务,共用同一个SERVICE_ID,然后马上销毁这个前台服务【stopSelf()】,这样一来前台就不会出现通知栏,而前台服务(第一个service)依旧存在。如此实现了优先级的提升。
这个方法实际上是利用了Google的一个漏洞,传入同一个id创建两个前台服务可以创 ...
webpack学习
webpack简介本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph)*,其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 *bundle。
webpack五个核心概念Entry(入口)webpack以哪个文件为入口开始打包,分析构建内部依赖图。
OutPut(输出)打包后的bundles输出到哪里,以及如何命名。
Loader处理非js文件(webpack本身只能处理js文件)
Plugins(插件)赋予一些更强劲的功能。
Mode主要指定webpack响应模式的配置:
选项
描述
特点
development
开发模式
production
生产(线上)模式
webpack配置12345678910111213141516171819202122232425262728//webpack.config.jsconst { resolve } = requir ...
css清除浮动的四种方法
css清除浮动的四种方法额外标签法w3c推荐用法
1234567<div class="tablist" > <div style="float:left">标签1</div> <div style="float:left">标签2</div> <div style="float:left">标签3</div> <div style="item">标签4</div> <div style="clear:both"></div></div>
overflow最简单
给父元素添加 :
1overflow:hidden/auto/scroll
:after伪元素法百度、淘宝、网易用的方法
给父元素添加:
12345678910.clearfix:after{ content:&quo ...
shell常用命令行
学习地址:
https://learnku.com/articles/5932/bash-command-and-syntax-take-you-to-upgrade-hit-boss,
菜鸟教程
https://www.youtube.com/watch?v=oxuRxtrO2Ag
shell命令行基础命令
命令
解释
ls
展示文件及目录;
ls -a
展示所有文件及目录(包括隐藏的);
pwd
输出当前目录(print working directory);
cd xx
传送到某个目录下;
pushd xx
传送到某个目录下,可返回;
popd
👆-返回;
locate
检索
history
查看近1,000行你执行过的指令;
查看命令信息
命令
解释
whatis xx
对某行指令做出简介。eg:whatis cal ;
apropos xx
例举出与xx有关的相关操作。 eg: apropos time ;
which xx
检查xx指令是否存在,在哪里。eg: which cal;
man xx
查看xx用法 ...
npm常用命令行
npm常用命令行注册、登录npm adduser 注册
npm login 登录
npm publish 发布/更新
npm version major/minor/patch 更新(自己的)依赖的版本号 m.m.p
下载依赖npm i xx 当前目录下安装(默认)
npm i -g xx 全局安装
npm i xx –save-dev 当前目录下安装,到开发环境。
npm uninstall/un xx 卸载
依赖库版本控制npm list 查看当前项目所有依赖
npm view xx 查看某某依赖下包含的依赖
npm outdated 如果不是最新版本,显示当前和最新版本号;
npm update 更新所有依赖到大版本下的最新班;ps 2.1.x -> 2.9,不会更新到3.0;