- 博客(145)
- 资源 (73)
- 收藏
- 关注

原创 Android 常用git指令记录总结
git指令汇总:git add(添加):把要提交的所有修改放到暂存区(Stage)git add ‘*txt’:提交某种格式的文档到暂存区(Stage)git add .:提交所有到暂存区git log(reflog):查看提交日志(缩减版)git branch 分支名:创建分支git branch :查看(local)所有的分支git branch -a: 查看所有的分支(包括local/remote)git branch -r: 查看(remote)所有分支回滚相关(begin)
2020-08-26 17:32:52
1561
1

原创 Android 常用adb指令记录总结
Android 日常开发adb指令记录(不断更新):注:这里包名均使用com.redsun.phone代替。一、java -version:出现相应情况 可直接安装ADT。二、adb shell:查看手机是否连接到PC。三、将手机中的数据库文件(info.db)复试一份到E盘中:adb pull /data/data/com.redsun.phone/data...
2020-04-04 18:34:14
6967

原创 Android 屏幕适配(修改系统字体大小、显示大小、修改分辨率相关适配)
qiAndroid实际开发中会遇到各种各样的机型,所以就需要对多种机型进行适配。常见的适配在这类就不详细介绍了,大家可以参考这里的系列文章Android通用屏幕适配讲解的已经很详细了。下面说的是:当修改系统的字体大小、显示大小、默认分辨率的情况下,如何明智的进行适配。一、修改系统字体大小与显示大小:设置--->显示--->字体与显示大小:会看到有如下两项:...
2019-09-10 14:10:24
30911
5
原创 Flutter Riverpod状态管理之AutoDisposeNotifierProvider
Flutter的Riverpod状态管理,目前来看是官方出的最好用的状态管理库了,今天我们主要看AutoDisposeNotifierProvider的使用,AutoDisposeNotifierProvider具有如下的优势:
2024-09-02 19:18:45
711
原创 Git WorkTree总结
Git Worktree是Git提供的一个强大的功能,允许你在同一个仓库中同时处理多个工作树(工作目录)。这在并行开发多个分支或版本时非常有用,因为你可以在不同的目录中同时检出不同的分支,而不必来回切换分支。
2024-08-19 15:27:43
745
原创 Flutter 常见错误记录总结
没问题 ,说明插件问题出现在注销的插件,多次尝试可定位到那个插件问题。1、首先,删除 pubspec.lock。可能是pub get 某一个/或多个插件失败导致的。2、如果网络正常,可进行注销的一半插件的方法通过。可能是版本不匹配或者是缓存导致的问题。,进行筛选那个插件出了问题,1、检查网络代理是否正常。
2023-11-02 18:34:32
2315
原创 Android OkHttp/Retrofit框架使用Interceptor 抓包/mock数据
在平时的业务开发中,我们都会和后端接口打交道,如果在开发阶段,我们不希望完全依赖后端接口,而是能在本地mock数据来快速开发验证,如何操作呢,有两种方案(该篇主要介绍第二种方案):
2023-10-07 16:49:33
1293
原创 Flutter 混合开发调试
针对Flutter开发的同学来说,大部分的应用还是Native + Flutter的混合开发,所以每次改完Flutter代码,运行整个项目无疑是很费时间的。所以Flutter官方也给我们提供了混合调试的方案【
2023-08-30 18:37:58
2014
原创 Android面试题(七)Kotlin高频面试题
线程是由系统调度的,线程切换或线程阻塞的开销都比较大。当我们需要和 Java 互操作的时候,Kotlin 把 Java 方法参数和返回类型中用到的 Object 类型看作 Any,这个 Any 的设计是 Kotlin 兼容 Java 时的一种权衡设计。作用是可以在编译kotlin文件时直接将内联函数内联掉,这样就是把内联函数执行过程放在调用此内联函数的位置,避免了java中多调用方法的操作,减少性能消耗。一般情况下,我们说的线程,都是内核线程,线程之间的切换,调度,都由操作系统负责。
2023-05-12 14:22:22
559
原创 Android面试题(八)Flutter高频面试题
Dart是值传递还是引用传递,Dart是弱引用还是强引用?Dart是值传递;强引用。Dart语法中dynamicvarobject三者的区别:var定义的类型是不可变的;dynamic和object类型是可以变的;dynamic 与object 的最大的区别是在静态类型检查上。Dart中??与??的区别:A??B左边如果为空返回右边的值,否则不处理;A??=B左边如果为空把B的值赋值给Adart中extends、 implements、with的用法与区别。
2023-05-07 11:25:24
403
原创 Charles 常用功能记录总结
确保手机已和PC上的Charles代理链接成功。我们在平时的业务开发中,经常有端上已开发完成,但后端接口还没有Ready的情况;或者需要接口频繁变更数据来测试各种case的情况。这样如果过度依赖接口,肯定会极大降低我们的开发效率,所以我们需要mock数据来提高开发效率。网上有很多开源的mock框架如、等,大家有兴趣的可以研究研究。今天要介绍的是使用Charles进行数据mock。
2022-12-16 12:03:49
3338
原创 SourceTree常用功能记录(updating...)
Git作为当前开发最流行的版本管理工具(分布式版本控制系统),得到了开发中的青睐,极大的提高了开发协同效率。与此同时,Git也早已拥有了自己的可视化工具,这简直就是懒人开发者的福音,在此我会逐步把平时开发中SourceTree使用频率较高的功能记录下来,以方便后续查看:为了看起来更轻松一点,我这里使用的中文版,大家可以根据自己喜好,去下载不同版本的SourceTree。
2022-10-15 20:01:17
2784
原创 Java设计模式之构建者模式
一、定义:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。二、角色:构建者模式的结构图如上所示,包含的角色如下:Director:导演类(指挥者),负责安排已有模块的顺序,然后通知Builder开始建造。Builder:抽象Builder类,规范产品的组建,一般由子类实现。ConcreteBuilder:具体建造者,实现抽象Builder类定义的所有方法,并且返回一个组建好的对象。Product:具体的产品类。三、具体实现:我们以台式机DI
2022-04-05 10:55:01
1437
1
原创 Java设计模式之命令模式
一、定义:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。二、角色:命令模式UML类图:1、Command:定义命令的接口,声明执行的方法。2、ConcreteCommand:命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。3、Receiver:接收者,真正执行命令的对象。任何类都可能成为一个接收者,只要它能够实现命令要求实现的相应功能。
2022-01-21 16:49:02
529
原创 Java设计模式之适配器模式
一、概述:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 二、解决的问题:即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 三. 模式中的角色:1、目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。2、需要适配的类(Adaptee):需要适配的类或适配者类。3、适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。
2022-01-21 11:53:28
856
原创 Java设计模式之模板方法模式
一、定义:定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类不改变一个算法的结构即可重定义算法的某些特定步骤。模板方法模式的结构图:模板方法模式有如下角色:1、AbstractClass:抽象类,定义了一套算法框架。2、ConcreteClass:具体实现类。二、模板方法模式的实现:1、创建抽象类,定义算法框架:/** * 创建抽象类,定义算法框架 */public abstract class AbstractSwordsman { //空实现方法
2022-01-21 11:33:01
5118
2
原创 Java设计模式之生产者/消费者模式
一、什么是生产者/消费者模式?某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。在生产者与消费者之间在加个缓冲区,我们形象的称之为仓库,生产者负责往仓库了进商品,而消费者负责从仓库里拿商品,这就构成了生产者消费者模式。结构图如下:二、生产者消费者模式的优点:1、解耦:由于有缓冲区的存在,生产者和消费者之间不直接依赖,耦合度降低。2、支持并发:由于生产者与消费者是两个独立的
2022-01-19 12:02:35
4547
2
原创 Android ContentProvider基础应用
一、适用场景1、ContentProvider为存储和读取数据提供了统一的接口2、 使用ContentProvider,应用程序可以实现数据共享3、 android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等)二、概念介绍:1、ContentProvider简介:当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据。虽然使用其他方法也可以...
2021-12-21 22:45:45
1960
原创 Android WebView开发(四):WebView独立进程解决方案
一、WebView面临的问题:1、WebView导致的内存泄漏问题,及后续引起的OOM问题。2、Android版本不同,采用了不同的内核,兼容性Crash。3、WebView代码质量,WebView和Native版本不一致,导致Crash。二、WebView独立进程的实现:WebView独立进程的实现比较简单,只需要在AndroidManifest中找到对应的WebViewActivity,对其配置"android: process"属性即可。如下: <!--独立进程W
2021-12-15 23:46:46
6333
原创 Android WebView开发(三):WebView性能优化
一、WebView面临的性能问题:WebView渲染大致需要如下几步:解析 HTML 文件 加载 JavaScript 和 CSS 文件 解析并执行 JavaScript 构建 DOM 结构 加载图片等资源 页面加载完毕二、WebView性能优化方案:......
2021-12-15 23:45:50
5475
1
原创 Android WebView开发(五):自定义WebView工具框
先看图:在WebView页面长按时会弹出一个复制框,但如果里面的item不是我们想要的或者想自定义,那么可以通过覆盖WebView的 startActionMode 方法来实现: /** * 长按弹出ActionMode菜单样式 * @param callback * @param type * @return */ @Override public ActionMode startActionMode(Callback
2021-12-15 23:44:31
11087
原创 Android WebView开发(二):WebView与Native交互
一、JS调用Native的三种方式:1、通过WebView的addJavascriptInterface进行对象映射:需要注意的是这种调用方式,如果你的 minSdkVersion <=16那么需要考虑到4.2之前的漏洞问题。mWebView.addJavascriptInterface(new JsCallAndroidInterface(), "JSCallBackInterface"); /** * JS调用android原生方法1: *
2021-12-15 23:41:53
3309
原创 Android WebView开发(一):基础应用
一、WebView的基础配置WebSettings ws = getSettings();ws.setBuiltInZoomControls(true);// 隐藏缩放按钮ws.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);// 排版适应屏幕ws.setUseWideViewPort(true);// 可任意比例缩放ws.setLoadWithOverviewMode(true);// setUseWideViewPort方法设
2021-12-15 23:40:52
2868
原创 Android音频开发(四):音频播放模式
音频播放模式主要有:1、耳机模式2、外放模式 3、听筒模式通过系统自带的 AudioManager 管理类来进行播放模式的切换,使用之前我们需初始化该类:AudioManager audioManager = (AudioManager)appContext.getSystemService(Context.AUDIO_SERVICE);然后设置其相应播放模式: /** * 切换到外放 */ private void changeToSpe...
2021-12-05 11:22:05
6497
1
原创 Android音频开发(五):感应(息屏/亮屏)管理
这节主要涉及到两部分音频管理:1、息/亮屏管理:屏幕管理,主要涉及的音频应用场景有,如录制或播放音频时刻控制其不息屏,或者通过监听息屏亮屏事件,我们针对性的控制音频的存储、发送、播放等操作。所需权限: <!--唤屏/息屏权限--> <uses-permission android:name="android.Manifest.permission.DEVICE_POWER"/> <uses-permission android:name=
2021-12-05 11:21:01
4373
原创 Android音频开发(二):录制音频(WAV及MP3格式)
首先看下音频录制跟播放效果简图:优快云不支持本地视频上传,我就先上传了一张截图:上面是录音:长按即可录音,支持声波动画,右滑删除等。支持录制pcm、wav、mp3格式音频。下面是播放:点击左边扬声器icon,开始播放刚录制的本地音频文件【也支持在线音频播放】,支持播放进度,支持切换播放模式(听筒/扬声器/耳机)等。一、音频录制权限:无论在做开发任何功能之前,总得先添加及申请相关权限,后续的工作才能正常进行下去。音频录制所需权限如下,而且要在代码中动态申请这些敏感权限,同意...
2021-12-05 11:18:23
13148
1
原创 Android音频开发(三):使用ExoPlayer播放音频
一、音频播放的权限及依赖:音频播放可能涉及到的权限: <uses-permission android:name="android.permission.INTERNET" /> <!--音频模式切换权限--> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> <!--唤屏/息屏权限--> <uses-p.
2021-12-05 11:15:29
7804
3
原创 Android音频开发(一):音频基础知识
一、Android音频开发(一):音频基础知识二、Android音频开发(二):录制WAV格式音频三、Android音频开发(三):录制MP3格式音频四、Android音频开发(四):使用Exoplayer播放音频五、Android音频开发(五):音频播放模式六、Android音频开发(六):感应(息屏/亮屏)管理七、Android音频开发(七):使用Exoplayer播放视频1、采样频率: 一秒钟内采样的次数称为采样频率,采样频率越高越接近原始信号。2、采样位宽【采样..
2021-12-05 11:10:14
3219
原创 Android面试题(五)数据结构/算法面试题
算法对于面试者来说是属于比较难的一块了,感觉难的原因主要有如下两方面:首先:在实际开发中,一般比较少涉及到算法的相关业务开发,除非是做算法这块的,所以就导致算法这块的实际开发经验不是很丰富,需要临时抱佛脚。其次:算法涉及到的范围比较广,包含字符串、数组、队列、栈、链表、二叉树、排序、堆、图等多种数据结构的算法。所以说,如果说对算法不是很熟悉,确实需要花费较多的时间去复习,但复习需要有个重点,一般面试频率比较高的一般就是数组、链表、二叉树、排序题这块。需要来重点复习。LeetCode。
2021-01-12 17:06:36
1547
1
原创 Android面试题(四)常用设计模式面试题
我们看下Android面试题总结的第四部分---设计模式:单例模式(参考):定义:保证一个类只有一个实例,并提供一个访问它的全局访问点。使用场景:1)整个项目需要一个共享访问点或共享数据。2)创建一个对象需要耗费的资源过多,比如访问I/O或者数据库等资源。3)工具类对象。工厂模式(参考):1、简单工厂模式(不在23中设计模式中):...
2021-01-12 15:17:20
1240
1
原创 Android面试题(六)高频网络基础面试题
写出OSI七层模型和TCP/IP的五层模型(参考):OSI(Open System InterConnect),即开放系统互联。一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。ISO为了使网络应用更好的普及,退出来OSI参考模型。其含义就是推荐所有公司都是用这个模型来规范网络,这样所有公司都有相同的规范,就能互联了。OSI定义了网络互联的七层模型(...
2021-01-12 10:40:06
821
1
原创 Android面试题(三)Java虚拟机面试题
Java虚拟机和Dalvik虚拟机的区别:1)Java虚拟机是基于栈;而Dalvik虚拟机是基于寄存器。2)Java虚拟机运行的是Java字节码,Java类会被编译成字节码.class文件,打包到.jar文件中,Java虚拟机从.class或者.jar文件中读取字节码;而Dalvik虚拟机运行的是自定义的.dex字节码格式,java类被编译成.class文件后,会通过一个dx工具将所有...
2021-01-12 10:38:10
864
原创 Android面试题(二)Android中高级/资深面试题
二、Android:Activity/Fragment的生命周期(参考):onCreate:表示Activity正在创建,可以在该方法中做一些初始化工作,比如调用setContentView去加载界面布局资源、初始化Activity所需数据等。onStart:表示Activity正在被启动,此时Activity已经可见了(但用户依然看不到),但是还没有出现在前台,还不能跟用户进行交互。...
2021-01-12 10:15:04
3156
2
原创 Android面试题(一)Java高频面试题
一、Java基础:Java的基本数据类型有哪些,各自占有多少个字节:基本类型 字节 byte 1 char 2 short 2 int 4 long 8 float 4 double 8 boolean - "=="与equals的区别:1)对于"==",比较的是值是否相等:...
2021-01-12 10:14:15
2399
原创 Android面试题总结(史上最全)
Android面试一般情况下会面到如下八部分的内容:Android面试题(一)Java高频面试题Android面试题(二)Android中高级/资深面试题Android面试题(三)Java虚拟机原理面试题Android面试题(四)常用设计模式面试题Android面试题(五)数据结构/算法面试题Android面试题(六)高频网络基础面试题Android面试题(七)Kotlin高频面试题Android面试题(八)Flutter高频面试题
2020-12-23 11:08:02
1444
2
原创 Java设计模式综述
Java设计模式总述 [持续更新...]一、设计模式六大原则1、单一职责原则2、开放封闭原则3、里氏替换原则4、依赖倒置原则5、迪米特原则6、接口隔离原则总结二、设计模式分类1、创建型设计模式单例模式:工厂方法模式:抽象工厂模式:建造者模式:原型模式:2、结构型设计模式适配器模式:装饰者模式:代理模式:外观模式:桥接模式:组合模式:享元模式:3、行为型设计模式策略模式:模板方法模式:观察者模式:迭代器模式:责任链模式:命令模式:备忘录模式:状态模式:访问者模式:中介者模式:解释器模式:一、设计模式六大原则
2020-12-13 22:42:36
601
1
原创 Java设计模式之装饰者模式
Java设计模式之装饰者模式目录一、定义二、具体实现三、使用场景四、优缺点目录装饰者模式是结构性设计模式之一,其在不必改变类文件及不使用继承的情况下,动态地扩展一个对象的功能。它通过创建一个包装对象(即装饰)来包裹真实的对象。一、定义动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。装饰着模式的结构图:如上结构图所示,装饰者模式中有如下角色:Component:可以是接口或者是抽象类,被装饰的最原始的对象。ConcreteComponent:组件具体实现类。
2020-12-13 15:41:09
6061
6
原创 Mac 搭建Tomcat服务器
1、下载Tomcat:http://tomcat.apache.org/download-70.cgi2、下载完成后,将其放入/Library文件夹下,并命名tomcat3、对目录文件进行权限设置:sudo chmod 755 Library/tomcat/bin/*.sh4、启动Tomcat:方法1:sudo sh startup.sh方法2:在Library/tomcat/bin中找到startup.sh文件,把文件拖入到终端中回车启动5、验证Tomcat是否启动:网址输入框输
2020-08-26 17:41:04
333
原创 Linux 常用shell指令记录总结
1、ls 列出文件ls a* 列出当前目录下以字母a开头的所有文件ls -l *.doc 给出当前目录下以.doc结尾的所有文件2、cp 复制文件cp afile afile.bak 把文件复制为新文件 afile.bakcp afile /home/bible/ 把文件从当前目录复制到/home/bible/目录下3、mv 移动和重命名文件mv afile bfile 将afile重命名为bfilemv afile /tmp 将当前目录下的afile移动到/tmp/目录下...
2020-08-26 17:28:11
958
LauncherActivity(github完整项目ListView等下来刷新完整版)
2014-06-23
Android listView的下拉刷新
2014-06-23
Android WebView与服务端交互Demo
2014-06-19
Android FragmentStatePagerAdapter
2014-06-18
Android 自定义View视图
2014-06-17
Android actionBar与Fragment结合使用Demo2
2014-06-16
Android actionBar与Fragment结合使用Demo
2014-06-12
Android ListFragment实例Demo(自定义适配器)
2014-06-12
Android ListFragment实例Demo
2014-06-11
Android Fragment与Fragment之间数据获取
2014-06-11
Android Fragment与Activity之间的数据交换(Fragment从Activity获取数据)
2014-06-10
Android 多点触控实例--图片的缩放
2014-06-05
Android MediaStore检索视频并播放
2014-05-28
Android MediaStore检索视频
2014-05-28
Android VideoView本地视频播放
2014-05-28
Android 使用意图播放本地视频
2014-05-28
Android 类似于ArcMenu(github上开源项目)的自定义多个按钮视图
2015-02-26
Android倒计时功能的实现
2014-11-12
Android倒计时功能的实现(CountDownTimer)
2014-11-11
Android WebView播放视频(包括全屏播放)
2014-09-26
Android 关于一个接口回调的Demo
2014-09-14
Android listView的上拉刷新(加载更多)
2014-08-24
Android自定义PopupWindow(转载)
2014-07-22
Android SoundPool的实例
2014-07-21
Android BitmapFactory图片压缩处理(大位图二次采样压缩处理)
2014-07-17
Android BroadcastReceiver实例Demo(有序广播的发送)
2014-07-16
Android ExpandableListView实例Demo
2014-07-04
Android ListView加载网络数据和图片
2014-07-03
Android ListView分页加载(服务端+Android端)Demo
2014-07-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人