- 博客(117)
- 收藏
- 关注
原创 Android EventBus 事件订阅/发布框架
一套Android Java 事件订阅 / 发布框架,由 greenrobot 团队开源。作用:在组件 / 线程间通信的场景中,将数据或事件传递给对应的订阅者使用原因:EventBus比传统的接口监听、Handler、LocalBroadcastManager更简单可靠。优点:1.使用事件总线框架,实现事件发布者与订阅者松耦合。2.提供透明线程间通信,隐藏了发布线程与订阅线程间的线程切换。......
2022-08-05 01:36:30 1386 1
原创 Java 反射
Java的反射机制是在运行状态中对于任意一个类,都能够知道这个类的所有属性和方法。对于任意一个对象,都能够调用它的任意方法和属性。既然能拿到我们就可以修改部分类型信息。这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。......
2022-07-16 23:24:53 344
原创 adb 基础命令
adb 基础命令#查看设备有多个设备连接时,执行该命令列出每个设备的serialNumber,后续命令加-s 可指定执行命令的设备adb devices#手机上未安装该apk文件,运行此命令(不在同一目录下,需带路径)adb install <Apk文件名>#如手机上已经安装该apk,加-r参数重装adb install -r <Apk文件名>#卸载软件,加-k命令(卸载软件时可以保留配置和缓存文件)adb uninstall [-k] <应用包名>#
2022-05-11 17:21:39 1012
原创 常见设计模式
设计模式设计模式(Design Patterns),是指在软件设计中,被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。类型总共有23种设计模式,可以分为3大类:创建型模式:关注的点是如何创建对象,将对象的创建和使用相分离,使得这两者相对独立工厂方法 抽象工厂 建造者 原型 单例结构型模式:通过组合各种对象来获取更好的结构,虽然面向对象的继承机制提供了最基本的子类扩展父类的功能,但结构型模式不仅仅简单地使用继承,而更多地通过组合与运行期的动态组合来实
2022-05-11 17:20:17 261
原创 Android资源asset和res的区别
android应用可以将资源存储在两个目录:res和assets。其中res目录中的资源只能存储在相应的子目录(如res/layout、res/values等)中,不能直接将资源存储在res目录中。assets目录中的资源可以任意存放,也可以建立任意层次的子目录。res和assets资源的主要区别如下。1、引用资源的方式不同res目录中的所有资源都会在R类的相应子类中生成对应的int类型变量,需要使用这些变量来引用资源。例如res/layout/main.xml是布局文件资源,会在R.layout
2022-03-12 14:57:47 2440
原创 Android中常见控件的基本属性总结
TextView向用户显示文本的用户界面元素android:id-----组件idandroid:layout_width------组件宽度android:lauout_height------组件高度android:background-----组件背景android:layout_marginHorizontal-----指定此视图左侧和右侧的额外空间android:ellipsize-----当文字长度超过textview宽度时的省略显示方式"start"省略号显示在开头"end
2022-02-27 02:54:41 1521
原创 Mac 安装 adb 以及错误解决
Mac 安装 adb 以及错误解决安装命令如下:brew install android-platform-toolsWarning: No available formula with the name "android-platform-tools".==> Searching for similarly named formulae...Error: No similarly named formulae found.It was migrated from homebrew/cor
2022-02-16 11:56:04 2897 1
原创 Homebrew 踩坑 Error: No similarly named formulae found.
Homebrew 踩坑 Error: No similarly named formulae found.==> Searching for similarly named formulae...Error: No similarly named formulae found.Error: No available formula or cask with the name "htop".==> Searching for a previously deleted formula (in
2022-02-16 11:20:49 2568
原创 最好用的网络库---Retrofit
RetrofitRetrofit侧重的是上层接口的封装,Retrofit允许我们对服务器接口进行归类,将功能同属一类的服务器接口定义到同一个接口文件中要想使用Retrofit,需要在app/build.gradle文件的dependencies闭包中添加如下内容dependencies { implementation 'com.squareup.retrofit2:retrofit:2.6.1' implementation 'com.squareup,retrofit2:conve
2022-01-28 22:53:20 2039
原创 Android中全局获取Context的技巧
在我们平时学习很多地方需要用到Context,比如弹出Toast,启动Activity的时候需要,发送广播的时候,操作数据库需要。。。。。。我们之前不考虑这个问题,是因为我们很多操作是在Activity中进行的,而Activity本身就是一个Context对象。当我们学习到的架构越来越复杂的时候,逻辑代码脱离Activity类的时候,而你又需要用到Context的时候,你就会产生疑惑?解决方法:Android提供了一个Application类,每当应用启动的时候,系统就会自动将这个类进行初始化。而我
2022-01-28 15:53:18 2559 1
原创 Git的学习
文章目录创建代码仓库配置身份提交本地代码查看修改内容撤销未提交的修改撤销已提交的修改查看提交记录Git是一个开源的分布式版本控制工具创建代码仓库windows系统,从开始找到GitBash打开配置身份git config --global user.name “xxx”git config --global user.emall “xxx@gmail.com”配置完成后可以通过相同的命令来查看是否配置成功仓库是用于保存版本管理所需信息的地方,所有本地提交的代码都会提交到代码仓库中,如.
2022-01-20 22:52:54 163
原创 Android中app目录下build.gradle文件的理解
先来看看build.gradle文件代码plugins { id 'com.android.application'}android { compileSdk 31 defaultConfig { applicationId "com.example.test" minSdk 21 targetSdk 31 versionCode 1 versionName "1.0" tes
2022-01-14 23:43:25 2853
原创 Android使用Http协议访问网络方式
文章目录使用HTTP协议访问网络使用HttpURLConnection使用OkHttp使用HTTP协议访问网络使用HttpURLConnection首先需要获取到HttpURLConnection的实例,一般只需new出一个URL对象,并传入目标的网络地址,然后调用一下openConnection()方法即可,如下所示:URL url = new URL("http://www.baidu.com");HttpURLConnection connection = (HttpURLConnect.
2021-12-31 00:07:17 3842
原创 Android运用手机多媒体
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录使用通知通知的基本用法使用通知通知(Notification)是Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。发出一条通知后,手机最上方的状态栏中会显示一个通知的图标,下拉状态栏后可以看到通知的详细内容通知的基本用法首先需要一个NotificationManager来对通知进行管理,可以调用Context的getSystemServi
2021-12-30 14:34:19 1917
原创 开源库LitePal操作数据库总结
文章目录LitePal简介配置LitePal创建和升级数据库使用LitePal添加数据使用LitePal更新数据使用LitePal删除数据LitePal简介LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,并将我们平时开发最常用到的一些数据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种建表和増删改查的操作。LitePal的项目主页上也有详细的使用文档,地址是:链接: 文档地址.配置LitePal大多数的开源项目都会将版本提交到jcenter上.
2021-12-24 23:34:23 2007
原创 Android数据库SQLite
文章目录创建数据库升级数据库添加数据Android系统竟然是内置了数据库的,SQLite是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,通常只需要几百KB的内存就足够了,因而特别适合在移动设备上使用。SQLite不仅支持标准的SQL语法,还遵循了数据库的ACID事务,SQLite又比一般的数据库要简单得多,它甚至不用设置用户名和密码就可以使用文件存储和SharedPreferences存储毕竟只适用于保存一些简单的数据和键值对,当需要存储大量复杂的关系型数据的时候,你就会发现以上两种存.
2021-12-23 23:57:47 1687
原创 android--详解广播机制
文章目录广播机制简介接收系统广播动态注册静态注册自定义广播发送标准广播有序广播广播机制简介发送广播方法—Intent接收广播方法—Broadcast Receiver(广播接收器)广播分类:标准广播和有序广播标准广播(Normal broadcasts)是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此它们之间没有任何先后顺序可言。这种广播的效率会比较高,但同时也意味着它是无法被截断的有序广播(Ordered broadcasts)则.
2021-12-21 22:12:45 1229
原创 android操作详细总结
Button搭配Toast使用 Button button1=findViewById(R.id.button_1); button1.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ Toast.makeText( MainActivity.this,"you clicked Button 1",Toast.LENGTH_SHOR
2021-12-15 21:23:19 1528 2
原创 常用且难用的ListView
文章目录ListView的简单用法定制ListView的界面ListView在过去绝对可以称得上Android中最常用的软件之一,由于手机屏幕空间比较有限,能够一次在屏幕上显示的内容并不多,当我们的程序中有大量的数据需要展示的时候,就可以借助ListView来实现,ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据会滚出屏幕ListView的简单用法首先新建一个ListViewTest项目,让Android Studio自动帮我们创建好Activity,.
2021-12-13 19:06:59 1165
原创 Android三种基本布局方式
文章目录LinearLayoutRelativeLayoutFrameLayout一个丰富的界面由很多个控件组成的,那么我们如何才能让各个控件有条不紊摆放在界面上,而不是乱糟糟的,这就需要借助布局来实现了LinearLayoutLinearLayout又称作线性布局,是一种非常常用的布局android:orientation 排列方式在垂直方向上依次排列<LinearLayout xmlns:android="http://schemas.android.com/apk/res/.
2021-12-11 00:08:54 4017
原创 几种Android常用控件的使用方法
文章目录TestViewButtonAndroid给我们提供了大量的UI控件,首先我们新建一个UIWidgetTest项目,默认Android Studio自动创建Activity,Activity名和布局名都使用默认值TestView它主要用于在界面上显示一段文本信息<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" .
2021-12-09 11:07:16 1666 5
原创 细品Activity启动模式之间的区别
文章目录standardsingleTopsingleTasksingleInstance启动模式一共有4种,可以在AndroidMainfest.xml中通过给<activity>标签指定android:launchMode属性来选择启动模式standardstandard是Activity默认的启动模式,在不进行显示指定的情况下,所有Activity都会自动使用这种模式,在standard模式下,每当启动一个新的Activity,他就会在返回栈中入栈,并处于栈顶的位置,对于使用st.
2021-12-08 11:30:39 831
原创 细细学习Activity的生命周期
文章目录返回栈Activity状态运行状态暂停状态停止状态销毁状态Activity的生存期onCreate()onStart()onResume()onPause()onStop()onDestroy()onRestart()Activity回收问题返回栈Android中的Activity是可以层叠的,每启动一个新的Activity,就会覆盖在原Activity之上,然后点击Back键会销毁最上面的Activity,下面的一个Activity就会重新显示出来Android是使用任务来管理Activ.
2021-12-07 19:59:17 703
原创 品赏第一行“Android代码“---Hello World
文章目录创建第一个Android项目创建HelloWorld项目启动模拟器创建第一个Android项目毫无疑问,那就是"hello world"创建HelloWorld项目选择new project,会打开一个让你选择项目类型的界面模板选择"Empty Activity"表示成功启动模拟器这里我下载的是Android10版本,大家按着操作即可因为电脑还不存在Android10系统的镜像,因此需要下载镜像点击三角形开始启动...
2021-12-01 15:26:17 2909
原创 你必须了解的Java异常知识
文章目录初识异常防御式编程异常的基本用法1.不处理异常2.使用 try catch 后的程序执行过程3.catch 只能处理对应种类的异常4.catch可以有多个5.也可以用一个 catch 捕获所有异常(不推荐)6.finally 表示最后的善后工作, 例如释放资源7.使用 try 负责回收资源8.如果本方法中没有合适的处理异常的方式, 就会沿着调用栈向上传递异常处理流程抛出异常异常说明关于 finally 的注意事项Java异常体系初识异常除以0System.out.println(10 / .
2021-11-30 20:25:05 705 1
原创 Java中抽象类和接口
文章目录抽象类接口抽象类产生的原因:父类本身的方法没有实质的内容,存在的目的就只是为了其他的子类进行重写,父类本身也不需要去创建实例像这种不需要去实例化就可以把这个类作为一个"抽象类"像这种本身没有方法体,只是为了被子类重写的方法,就可以把这个方法作为一个"抽象方法"Java中使用abstract关键字来描述抽象类和抽象方法abstract关键字存在的意义,就是让程序员明确的告诉编译器,这个类就是一个抽象的类,不应该进行实例化,于是编译器就要做好相关的检查工作抽象方法不需要方法体抽象方法.
2021-11-29 16:01:36 123
原创 必须学习的Java多态知识
文章目录向上转型动态绑定方法重写多态向下转型向上转型父类的引用指向了一个子类的对象(看起来就好像把)Cat cat=new Cat();Animal animal=null;//向上转型animal=cat;上述代码相当于:Animal animal=new Cat();向上转型,也可能发生在方法传参的过程中public class Test { public static void main(String[] args) { Bird bird = new Bir.
2021-11-28 21:44:07 574
原创 Java String总结
文章目录创建String字符串比较字符串常量池直接赋值构造方法理解字符串不可变反射---特殊手段char[]和String创建String常见的构造方法:String str1="hello";String str2=new String("world");在官方文档上 (https://docs.oracle.com/javase/8/docs/api/index.html) 我们可以看到 String 还支持很多其他的构造方式, 我们用到的时候去查就可以了字符串比较大部分编程语言中,.
2021-11-26 20:34:15 573 1
原创 Java初识
文章目录关于Java的基本环境搭建问题1.JDK,JRE,JVM2.IDEA关于Hello world的注意事项:变量的定义数据类型变量的形态关于Java的基本环境搭建问题1.JDK,JRE,JVMJDK:Java开发工具包,开发Java程序使用JRE:Java运行时环境JVM:Java虚拟机,是JRE的核心组件(相当于是翻译官)Java有个特点:跨平台(操作系统)2.IDEAIDEA是一种"集成开发工具"关于Hello world的注意事项:1.类名必须和文件名相同(硬性要求)2.
2021-11-17 21:40:43 233
原创 01背包问题详解
文章目录在下面的讲解中,我举一个例子:背包最大重量为4。物品为:重量 价值物品0 1 15物品1 3 20物品2 4 30问背包能背的物品最大价值是多少?确定dp数组以及下标的含义对于背包问题,有一种写法, 是使用二维数组,即dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。确定递推公式再回顾一下dp[i][j]的含义:从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。那么可以有两个方向推出来dp[i][j].
2021-10-23 18:35:07 132
原创 TCP三次握手四次挥手seq和ack的过程
文章目录三次握手过程数据传输过程四次挥手过程总结ackseq三次握手过程数据传输过程四次挥手过程总结ack1.在握手和挥手阶段,ack确认号是对方seq+12.在传输数据阶段,ack确认号是对方seq+数据长度seq1.在握手和挥手阶段,seq为上次seq+1(对方发来的ack大小)2.在传输数据阶段,seq为上次seq+数据长度(对方发来的ack大小)...
2021-10-05 10:14:35 776 1
原创 各种锁的介绍
文章目录互斥锁条件锁(条件变量)读写锁读写锁的特性:自旋锁互斥锁mutex(mutual exclusive)即互斥量(互斥体),也便是常说的互斥锁。其思想简单粗暴,多线程共享一个互斥量,然后线程之间去竞争。得到锁的线程可以进入临界区执行代码。mutex是睡眠等待(sleep waiting)类型的锁,当线程抢互斥锁失败的时候,线程会陷入休眠。优点就是节省CPU资源,缺点就是休眠唤醒会消耗一点时间。// 声明一个互斥量 pthread_mutex_t mtx;// 初始化 pthr.
2021-10-04 11:28:01 228
原创 Python类与对象----封装继承多态三大特性
文章目录三大特性三大特性封装:提高程序的安全性继承:提高代码的复用性多态:提高程序的可扩展性和可维护性
2021-07-11 12:11:34 263 1
原创 Python类与对象
文章目录类对象类属性类方法静态方法动态绑定属性和方法类class Student:#首字母大写 native_place='西安' def __init__(self,name,age): self.name=name self.age=age def info(self): print('我的名字:',self.name,'年龄是:',self.age) @classmethod#类方法 def cm(cls).
2021-07-09 02:02:43 158
原创 Python中函数详解
文章目录函数定义函数参数传递函数参数传递内存分析函数返回值函数的参数定义变量作用域函数定义def calc(a,b): c=a+b return cresult=calc(10,20)print(result)函数参数传递1.位置实参def calc(a,b): c=a+b return c calc(10,20)2.关键字实参def calc(a,b): c=a+b return c calc(b=10,a=20)函数参数传递.
2021-07-08 01:36:50 342 2
原创 Python中字符串的迷幻操作-----驻留机制的理解
文章目录驻留机制字符串什么是字符串驻留机制呐驻留机制的优点字符串查询操作字符串大小写转换操作驻留机制一定有小伙伴好奇神马是驻留机制呐!~首先来说说字符串叭字符串在python中字符串是基本数据类型,是一个不可变的字符序列什么是字符串驻留机制呐仅保留一份相同且不可变的字符串的方法,不同的值被存放在字符串的驻留池中,python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量举例子:a='hello python'b="he
2021-07-05 02:16:02 292 3
原创 python数据结构----集合
文章目录集合概念创建集合概念python语言提供的内置数据结构可变序列集合没有value的字典创建s={'python',123,2}print(s)s=set(range(6))print(s)print(set([3,4,53,56]))print(set((3,4,43,435)))print(set('python'))print(set({123,4,4,6}))s={}s1=set()print(s,type(s))print(s1,type(s1))
2021-06-25 14:40:44 147 1
原创 Python数据结构----元组
文章目录元组概念元组的创建方式为什么元组是不可变序列?元组的遍历元组概念Python内置的数据结构之一,是一个 不可变序列(无法增删查改)元组的创建方式直接小括号t=('python','hello',90)使用内置函数tuple()t=tuple(('Python','hello',98))只包含一个元组的元素需要使用逗号和小括号t=(10,)#不加逗号,默认会是str类型,加上逗号才是tuple类型为什么元组是不可变序列?在多任务环境下,同时操作对象时不需要
2021-06-20 01:37:15 217
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人