- 博客(38)
- 收藏
- 关注
原创 【简单理解什么是简单工厂、工厂方法与抽象工厂模式】
工厂方法模式的实现步骤:定义产品接口——>定义产品的具体实现类,让其实现"产品接口"并重写"产品接口方法"——>定义产品的工厂接口——>定义产品具体的工厂类,让其实"现工厂接口"并重写"工厂接口方法"——>在使用的时候需要创建不同产品的工厂类对象,然后调用他们重写后的接口方法来创建对象。工厂方法模式的意义:工厂方法模式通过抽象工厂接口和具体工厂子类的分离,将对象的创建逻辑与使用逻辑解耦,同时通过多态性实现灵活扩展。1.简单工厂模式通过一个工厂类集中管理对象的创建,通过参数决定具体创建哪个对象。
2025-04-08 10:09:27
646
原创 【需求开发】【Android 13新特性】通过StatusBarManager.requestAddTileService()方法提示用户添加TileService
提示:此文章仅作为本人记录日常学习使用,若有存在错误或者不严谨得地方欢迎指正。
2024-06-06 10:51:23
582
原创 【性能案例】振动服务死锁导致太鼓の達人游戏卡顿
太鼓の達人(Rhythm Connect):1.10.1:日本用户反馈在玩「太鼓の達人」这款音乐游戏时,每一局都会发生中度卡顿及掉帧。「太鼓の達人」是一款音乐节奏游戏,用户需要分别单手点击、双手点击屏幕的不同位置来跟随音乐节奏触发不同的效果。经过研发本地复现故障发现,只有在连续使用双手同时点击屏幕触发游戏效果时才会触发卡顿。并且该现象只存在于当前项目,在Pixel和竞品上均未复现,可以基本排除三方应用的问题。
2024-05-27 15:59:53
983
原创 【LeetCode算法】28. 找出字符串中第一个匹配项的下标
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。
2024-05-07 15:56:47
581
2
原创 【LeetCode算法】389. 找不同
给定两个字符串 s 和 t ,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母,请找出在 t 中被添加的字母。
2024-05-06 15:39:36
319
1
原创 【LeetCode算法】1768. 交替合并字符串
给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。
2024-05-06 15:06:26
276
1
原创 【需求开发】应用被停用/冻结后 在Settings中动态隐藏/显示Preference
提示:此文章仅作为本人记录日常学习使用,若有存在错误或者不严谨得地方欢迎指正。
2024-03-20 15:15:10
1094
原创 【Android新版本兼容】startActivityForResult()方法被弃用的解决方案
提示:此文章仅作为本人记录日常学习使用,若有存在错误或者不严谨得地方欢迎指正。
2024-02-02 17:20:08
3913
原创 【Android新版本兼容】onBackPressed()方法被弃用的解决方案
提示:此文章仅作为本人记录日常学习使用,若有存在错误或者不严谨得地方欢迎指正。
2024-02-02 16:34:26
5716
2
原创 【27】应用开发——Android网络技术与Retrofit框架
WebView是Android中的一个组件,它允许我们在自己的应用程序内部嵌入一个浏览器。借助WebView,我们可以很轻松的显示HTML、CSS和JavaScript内容,就像在浏览器中一样。如果你想使用一个WebView,你需要先在布局文件中添加一个WebView控件。
2023-12-21 16:38:46
1175
原创 【26】应用开发——如何在Ubuntu系统中安装并配置Apache Http Server
提示:此文章仅作为本人记录日常学习使用,若有存在错误或者不严谨得地方欢迎指正。
2023-12-21 10:44:55
1959
原创 【21】Kotlin语法进阶——泛型和委托
泛型允许我们在编写代码时不指定具体的类型,而是使用一个占位符 < T > 来代替。泛型主要有两种定义的方式,一种是定义泛型类,另一种是定义泛型方法。
2023-11-29 17:10:10
1148
原创 【24】应用开发——Android多线程编程与Service的运用
Service是Android中实现程序后台运行的解决方案,它适合执行那些不需要和用户进行交互而且还要求长期运行的任务。不过,Service并不是运行在一个独立的进程当中的,而是依赖于创建Service时所在的应用程序进程。当创建Service的应用程序进程被Kill时,所有依赖于该进程的Service也会停止运行。
2023-11-28 11:33:06
1398
原创 【23】Kotlin扩展——在Android Studio中使用ViewBinding绑定控件
提示:此文章仅作为本人记录日常学习使用,若有存在错误或者不严谨得地方欢迎指正。
2023-11-23 15:45:32
2623
原创 【22】应用开发——运用手机多媒体(通知、摄像头、相册、音频)进行开发
在上一节中我们实现了通知的发送,不过当你点击通知时就会发现没有任何效果。如果我们想实现通知的点击跳转效果,还需要在代码中进行额外的设置,这就涉及到PendingIntent相关的知识了。
2023-11-21 15:16:13
198
原创 【20】应用开发——Android运行时权限&&通过ContentProvider实现程序之间的数据共享
ContentProvider主要用于在不同的应用程序之间实现数据共享的功能。它允许一个程序访问另一个程序中的数据,同时还可以保证被访问数据的安全性。
2023-11-14 16:22:35
1237
原创 【17】Kotlin语法进阶——Kotlin高阶函数基础
在知道了参数类型的声明后,现在我们就可以尝试声明一个高阶函数了。还记得吗,所谓高阶函数就是参数或者返回值是一个参数类型的函数/*高阶函数*/参数名 参数类型 返回值类型/*普通函数*/参数名 参数类型可以看到,我们首先声明了一个higherExample()方法,并且让它接收一个函数类型作为参数:func是参数名,(String: Int)代表参数类型,Unit表示函数类型参数没有返回值。
2023-10-23 16:14:33
815
1
原创 【14】Kotlin语法进阶——扩展函数和运算符重载
扩展函数是Kotlin中一种特殊的函数,它允许我们在不修改原有类的基础上,为该类添加新的方法。这就像是在原有类上“扩展”新的行为或功能。
2023-10-19 15:49:02
227
1
原创 【18】应用开发——数据存储与持久化技术
Android系统提供了3种方式来实现数据的持久化功能:① 文件存储 ② SharePreferences存储 ③ 数据库存储
2023-10-18 14:20:01
229
原创 【16】应用开发——广播实战:实现强制下线功能
我们新创建一个BoradcastBestPractice项目,并创建一个ActivityController的单例类用来管理全局的Activity。通过ActivityController我们不论在任何界面,只需要调用finishAllActivities()方法就可以关闭所有界面。
2023-10-13 14:29:54
303
原创 【15】应用开发——Broadcast广播机制
Android的广播机制是观察者模式在Android系统中的一种实际应用,它允许应用程序在接收到特定的广播后执行某些操作。其中,发送广播是通过Intent来实现的,接收广播是通过BroadcastReceiver广播接收器来实现的。Android广播的类型有两种,他们分别是:①标准广播 ②有序广播。
2023-10-12 15:51:12
2031
原创 【13】应用开发——简易版新闻应用实战教程
上面用来显示新闻的标题,下面用来显示新闻的正文内容。新闻内容这个布局默认应该是不可见的,因为当用户还没在屏幕左边选中新闻列表中的任何一条新闻时,是不应该在屏幕右边显示该新闻内容的。
2023-10-11 10:59:21
490
原创 【12】应用开发——Fragment的使用
Fragment是一种可以嵌入在Activity中的UI片段,在平板上应用非常广泛。我们可以在一个Activity中引入多个Fragment来显示更多的内容,因此Fragment可以很好的在大屏幕Android设备中发挥作用。
2023-10-08 11:35:55
1376
原创 【11】Kotlin语法进阶——延迟初始化和密封类
我们可以通过"全局变量延迟初始化"这种方式解决这个问题。延迟初始化使用的是lateinit关键字,通过延迟初始化告诉Kotlin编译器:“我将在晚些时候对这个变量进行初始化”,这样就不用在一开始的时候将其赋值为null。
2023-09-25 15:47:55
423
1
原创 【10】Kotlin语法进阶——标准函数和静态方法
在上面的代码中,我们通过object关键字定义了一个单例类Util。这个单例类中的方法在所有地方都可以通过类名来访问,例如Util.doAction()。虽然这里的doAction()并不是静态方法,但是我们仍然可以像Java中那样通过类名的方式直接来访问。但是单例类的写法也有一个弊端,就是单例类中的所有方法都会变成类似静态方法的调用方式。如果我们只希望让类中某一个方法变成静态方法的调用方式该怎么办呢?
2023-09-21 15:43:20
1289
1
原创 【8】应用开发——基本布局与列表的使用
在前面的例子中,我们成功通过引入了布局的方式在ctivity_main.xml中引入了标题栏。但是你有没有想过一个问题,标题栏中的Back和Edit按钮是需要能够响应(点击)事件的。这就使得我们不管是在哪一个Activity中,只要是引入了这个标题栏,都需要在Activity中重新注册一遍返回按钮的点击事件。为了解决这个问题,可以使用自定义控件。新建一个Kotlin Class/File文件TitleLayout,并让其继承自LinearLayout。我们来让TitleLayout成为我们的自定义控件。
2023-09-18 09:16:21
593
1
原创 【7】应用开发——Activity全面讲解
Android Studio会在new一个新Activity时自动帮我们生成相应的layout布局文件并在Activity内引用这个布局。但是我们这次选择手动创建和加载布局。
2023-09-13 15:27:31
3847
原创 【6】Kotlin基础——神奇的空指针检查系统
空指针是大家编程中很常见的一类异常,即使再细心的程序员也不能保证所写的代码一定不会发生空指针。在Kotlin语言中,有一套很完整的空指针预防系统,可以科学的解决空指针这一大难题。
2023-09-07 15:12:12
302
原创 【4】Kotlin基础——接口的多种使用
Kotlin语言和Java语言都是单继承结构,即一个类最多只能继承一个父类,但是却可以实现任意多个接口。(注意这里的"最多"代表0个或1个)
2023-09-05 14:34:05
301
原创 【2】Kotlin基础——for-in循环语句的使用
Kotlin语言中的for循环不同于Java语言,在Kotlin语言中for循环需要搭配in组成for-in循环用法来使用。
2023-08-14 19:24:04
1147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人