
Android应用层
文章平均质量分 53
基础
七qi_
优快云移动开发领域新星创作者,阿里云开发者社区乘风者计划专家博主,大家未来一起努力呀!
展开
-
安卓四大组件之Service
Service可以理解成为是一个没有布局的ActivityService和Activity都是运行在主线程中的,都是可以有线程,Service和Activity都可以理解成一个车间,里面有一个个流水线(线程),且二者都不能进行耗时操作。原创 2023-07-24 10:28:47 · 186 阅读 · 0 评论 -
【Android小技巧】分享Android Studio常用快捷键(持续更新)
ctrl+p:查看此方法所有重载(光标需在括号内)Alt+7:查看此类的结构(方法、变量等)ctrl+tab:切换窗口(应用内)ctrl+s:保存(好习惯需养成)ctrl+H:打开此类的继承关系。ctrl+l:在当前类查找关键词。shift+F10:编译运行。好像这几个前期的就够用了吧。ctrl+i:重写父类方法。ctrl+F4:关闭窗口。原创 2023-05-18 11:49:47 · 326 阅读 · 0 评论 -
【Android面试】有26个字母a~z,找出所有字母组合,a、b、c、ab、abc、a~z 都是一个组合(顺序无关)
首先定义了包含26个字母的字符数组alphabet,然后遍历从长度为1到长度为26的所有可能的组合,在。函数中,使用递归方式遍历字母表,通过检查前缀字符串prefix的最后一个字符来避免重复。实现了对所有情况的穷举,并将结果保存到列表result中。当k = 0时,将结果添加到列表result中,并返回。原创 2023-05-18 11:20:24 · 882 阅读 · 0 评论 -
【Android面试】使用Java,有n个人(编号1~n围成一圈),从编号为1的开始报数,从1报数到m,报到m的人出去,下一个人继续从1开始报数,通过算法求最后一个留下的人的编号为多少
使用Java,有n个人(编号1~n围成一圈),从编号为1的开始报数,从1报数到m,报到m的人出去,下一个人继续从1开始报数,通过算法求最后一个留下的人的编号为多少原创 2023-05-18 11:28:53 · 497 阅读 · 0 评论 -
【Android面试】有1000个数,1000个数的大小范围是0-999,有两个相同的数字,请设计算法找出来
1000个数字只有两个相同的数字,那就是说把数组排序后,这两个数一定相邻。通过排序算法进行排序,在循环判断相邻的数即可。原创 2023-05-18 12:47:28 · 458 阅读 · 0 评论 -
【Android面试】字符串拆分及字符串组合
将字符串拆分成数组和实现字符串组合\n不能使用语言的基本分割组合函数(如 Java 的 String.split, php 的 explode 和 implode)1)字符串拆分成字符串数组,如"ab&&2"通过"&&“做分割符,分割得到字符串数组[“ab”, “2”]2)实现字符串组合,如[“ab”, “2”]通过”&&“分隔符,组成字符串"ab&&2”原创 2023-05-18 11:16:00 · 703 阅读 · 0 评论 -
知道一个服务器IP应该怎么进入
通过本地电脑,点击开始---运行---输入mstsc---回车会弹出一个远程窗口。首先我是国内,访问国外的网站比如谷歌等,访问特别慢,有时候甚至登录不进去。知道服务器IP之后,你还需要知道服务器的远程端口+帐号+密码才能登录的。使用putty输入ip,帐号,密码来登录,linux使用的是命令。登录进去后就会显示上方这个,点击就进入另外一台主机之中了。输入帐号跟密码就可以登录到远程服务器里面了。全屏:在正中间的上面可以缩小至任务栏。上面讲的是window服务器的远程。部份屏:正常右上角关闭和缩小。原创 2023-03-08 15:00:24 · 13839 阅读 · 0 评论 -
HTTP请求报文和响应报文
MIME类型:就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。:服务器收到请求报文后,作为响应发往客户端的报文称为响应报文。请求头的作用:主要用于通知服务端有关于客户端的请求信息。Get请求只有请求行和请求头,没有请求体。:从客户端发往服务器的报文叫请求报文。(这个博主写的很通俗易懂)Post请求三个都有。原创 2022-12-14 16:44:02 · 235 阅读 · 0 评论 -
IP地址和端口号
IP地址一共有4byte(32bit组成),比如0.0.0.0,不简写的话就是.0000 0000..0000 0000(加粗倾斜看得清楚一点)而IP地址是由和组成,前面是网络号,后面是主机号。一个网络号占一个字节,一个主机号占一个字节。网络号=全0: 本网络网络号=特定值:某网络网络号=127: 寻回地址网络号=全1: 所有网络,也就是代表整个TCP/IP网络主机号=全0: 没主机->网络地址主机号=特定值:某主机主机号=全1: 广播。原创 2022-12-13 11:59:13 · 2147 阅读 · 0 评论 -
OkHttp架构—异步请求enqueue(不完整篇)
在分发器Dispatcher类中,有一个这样的方法,这个方法内部就是创建线程池的}}线程池和拦截器懒得写了,lay了。。整体流程:创建RealCall对象>>重写RealCall类enqueue()>>调用Dispatcher类enqueue()来调配任务(队列分配)>>线程池执行running队列>>线程执行完毕队列移动>>线程池执行>>队列移动。。。。。原创 2022-12-16 22:22:13 · 2262 阅读 · 1 评论 -
ContextWrapper类和ContextImpl类的设计模式——代理模式
装饰器模式的目的是:为给原先的对象添加或者拓展一些原先没有的功能。为其他对象提供一种代理以控制对这个对象的访问。是代理类,这个类是直接和我们的代码相联系的。只有管家联系的到主人,而管家负责和外界交流。ContextWrapper类。ContextWrapper类。ContextWrapper类。就像一个和外界交流的贴身管家。ContextImpl类。ContextImpl类。ContextImpl类。就像一个闭门修炼的主人。是实现类,几乎所有调用。和装饰器模式的区别?原创 2023-01-16 18:21:58 · 326 阅读 · 0 评论 -
适配器模式
有三种适配器模式。类适配器对象适配器接口适配器。原创 2023-02-06 10:20:07 · 355 阅读 · 0 评论 -
【Android应用】Fragment跳转Activity时携带数据
此处就是最普通的startActivity方法了,上面的都是在这个startActivity方法的基础上进行"加工"。在网上你可以看到很多Fragment都是用接口回调来携带数据跳转到Activity。点进去会发现这个地方才是具体实现的startActivity的地方。我觉得好麻烦,于是你们可以用我下面的方法。原创 2023-05-19 11:10:35 · 351 阅读 · 0 评论 -
Android关于Manifest清单文件name报错
com.yyt.accountbooks.activity.LoginActivity这样就是不简写的。activity的name,前面有个点是接上了你的package名,省略了包名,不然。在清单文件的根目录加上package。原创 2023-03-08 15:57:08 · 595 阅读 · 2 评论 -
Lifecycle的基本使用
在这个机制中有两个核心类,一个是LifecycleOwner接口,该接口有一个getLifecycle()方法,实现了这个接口的类就可以作为一个被观察者,AppCompatActivity和Fragment就实现了这个接口,所以它们的生命周期就可以被观察和监听。从打印的日志中可以看出,当Activity中的生命周期方法回调时,都会回调LifecycleObserver中对应的监听方法,这样就完成了对Activity生命周期的观察和监听。2、创建一个AppCompatActivity作为被观察者。转载 2023-03-07 15:31:48 · 166 阅读 · 0 评论 -
Android动画——属性动画
在属性动画中,常用到的API有ValueAnimator,ObjectAnimator。ValueAnimator:时间引擎,负责计算各个帧的属性值,基本上其他属性动画都会直接或间接继承它;ObjectAnimator: ValueAnimator 的子类,对指定对象的属性执行动画。属性动画可以看作是增强版的补间动画,与补间动画的不同之处体现在:补间动画只能定义两个关键帧在透明、旋转、位移和倾斜这四个属性的变换,但是属性动画可以定义任何属性的变化。原创 2023-03-07 11:22:58 · 1082 阅读 · 0 评论 -
每日记录自己的Android项目(二)—Viewbinding,WebView,Navigation
这里可以看到,setContentView的入参写法都变了,因为可通过XXXBinding类的getRoot函数获取到布局的根View,再通过setContentView添加到Activity。用法也很简单,在Activity的生命周期oncreate()中,直接通过binding点名字的方式就可以获取到控件实例,消除了findViewById的模版代码。今天是想把做一个跳转页面的时候调到H5页面去,但是这个页面我用app来承载,不要调到浏览器去。首先我新创了一个空的Activity,添加代码。原创 2023-03-04 17:49:19 · 874 阅读 · 0 评论 -
【Android】正确使用资源res文件
方法二:自己定义一个主题,就是类似(我用的),但是我这个是没有ActionBar标题栏的,你需要自己再去定义一个标题栏,然后去清单文件中使用自己定义的主题。一般设置在XML布局文件的UI控件的background里面,用@drawable/xxx就可以了。我的AS下载的是最新版本,Button按钮的背景颜色一直都是亮紫色,无法更改。针对某个控件,你可以为你的按钮,文字定制一个样式,属于比较小的点。比如我们想要点击按钮的时候是蓝色,不点击的时候是黑色。首先在你的清单文件中看你应用的是哪个主题。原创 2023-03-02 17:37:17 · 1734 阅读 · 0 评论 -
每日记录自己的Android项目(一)——UI界面
(背景有点歪了)原创 2023-03-02 15:38:00 · 1151 阅读 · 0 评论 -
【Android篇】APK打包流程浅析
此时此刻在我们Project面板的app\bulid\outputs\apk\debug中会生成一个对应的apk的包,这个过程APK打包的这个能力不是AS软件提供的,而是AS的SDK提供的(就是当初你安装AS的时候安装的SDK)。签名:Gradle调用apksigner.bat工具,就从没签名的apk变成有签名的apk,apk里面就会多出一个META-INF源信息文件,没签名就没有。build-tools里面有很多我们打包会用到的工具,里面的工具可以完成具体的功能,例如aapt,aidl等等。原创 2023-03-02 11:38:58 · 3817 阅读 · 0 评论 -
【Android】jar包和AAR包
以前在使用开发 Android 时,如果想代码打包,只有 jar 包一个方法,但是 jar包 只能把 Java 文件代码打包进去,如果要使用一个有布局和资源的库的话,除了将 jar 放入 libs 外,还要引入相关的资源和配置文件,很麻烦。Android Studio 出来之后,出现了一个新的方法,打包 AAR 文件 ,这个不仅可以把 Java 文件给打进去,还包含 AndroidManifest.xml 和资源文件等,使用的话,直接引入一个 AAR 文件就足够了,非常方便。原创 2023-02-25 15:51:41 · 2639 阅读 · 0 评论 -
调试版获取安卓SHA1值
确保你的电脑上有JDK,配置好环境变量后执行我这些步骤。where keytool看看电脑找不找得到。口令默认android或者为空。找得到就可以进行下一步了。原创 2023-02-25 15:01:57 · 114 阅读 · 0 评论 -
Gradle配置详解
答案:gradle tasks --all查看所有任务。然后,多尝试几次,直到成功。几个问题,为什么我知道有preXXXBuild这样的任务?图39 实例2的结果。转载 2023-02-23 18:03:30 · 732 阅读 · 0 评论 -
Android目录build.gradle 解析(一)
Gradle 是用了一种基于 Groovy 的领域特定语言(DSL,Demain Specific Language)来声明项目设置,摒弃了 XML(如 ANT 和 Maven)的各种繁琐配置。,配置项目构建的各种属性,compileSDKVersion 用于指定项目的变异 SDK 版本, buildToolsVersion 用户指定项目构建工具的版本。Gradle 是一个非常先进的项目构建工具。3) 项目中一般会出现2个或者多个 build.gradle 文件,一个在根目录下,一个在 app 目录下。转载 2023-02-23 10:27:51 · 1959 阅读 · 0 评论 -
【Android】DrawerLayout抽屉布局的写法
好问题,当我们在抽屉布局的最顶层布局Layout中加入下面这一行。那XML文件怎么分辨我们这个是主布局还是抽屉布局呢?所以两个界面的布局都要写在同一个XML文件中。XML就可以分辨出来这里面的是抽屉布局了。就是这个XML布局=主布局+抽屉布局!就是在XML文件中 插入这样一坨代码。这个XML文件包含抽屉布局的代码。一个页面想要实现抽屉布局很简单!原创 2023-02-16 11:19:54 · 482 阅读 · 0 评论 -
Android篇之高频面试题(一)
3、Activity有EditText,如何保证Activity销毁和恢复的时候,EditText的内容保存下来?4、在manifest中可以声明哪几种Activity的启动模式、请分别列举并简单描述各自的特点。2、在程序配置改变的时候,如切换横竖屏,会导致Activity销毁,此时如何保存和恢复大量数据?1、简单描述当Activity在后台销毁时,如何保存和恢复状态的数据?9、简单列举一些用到过的设计模式,详细描述单例模式实现的几种方式。7、列举你所知道的Android多线程之间的通讯的方式。原创 2023-02-16 10:49:33 · 341 阅读 · 0 评论 -
Butter Knife框架(小刀注解)_@BindView()用法
代替了findViewById方法。也就是说你不用再去写这个方法了。传入当前页面的Activity,然后使用set方法调整UI控件即可。今天遇到了一个在UI控件的上方使用该注解的情况。注解的控件变量必须是public,否则报错。然后再创建一个注解处理器。那这个注解有什么用呢?点开这个注解你会发现~原创 2023-02-13 15:55:12 · 458 阅读 · 0 评论 -
【Android】隐式跳转时找不到Activity的情况
如果真的没有Activity,那么执行startActivity,就会出现ActivityNotFindException。PacageManager中的resolveActivity方法。如果找不到所需Activity,那么就会返回一个null。Intent 中的resolveActivity方法。转载 2023-02-08 15:36:17 · 420 阅读 · 0 评论 -
Android之简单描述jetpack
就是把很多变量,逻辑和数据摆在我们的Activity和Fragment中,这样的代码很混乱,难以维护。然后Activity仅负责了解如何在屏幕上显示该数据和接受用户互动,但是它不会处理这些互动。如果你的应用加载和存储数据,那么建议创建一个Repository的存储区类。避免这种情况,则可以创建Presenter类,来处理UI数据。另外,应该确保ViewModel不会因为承担过多责任而臃肿。具体的可以用来保存Activity的所有UI数据。这样的开发模式违反了单一责任的原则。存储与加载应用数据的API。原创 2023-01-19 17:18:40 · 1592 阅读 · 0 评论 -
Json解析问题—数组用Gson反序列化为List双引号消失
目前的思路:用List进行解析,for循环遍历。先把这data后面这部分toJson序列化为Json对象,在反序列化为一组一组的List对象。因为getData()的类型是Object的,获得的是data后面部份的数组,一共有13个数组对象。结果变成了这样一组一组!这样连Json格式都不是了,还怎么解析!所以我知道这个办法行不通了,得换一种方法。本应该是这样的一组一组的。原创 2023-01-14 10:56:58 · 842 阅读 · 0 评论 -
Android_标题栏左上角返回上一级
然后用switch(itemId)判断,是否是菜单的某个元素R.id.menu_about等等,或者。方法1:actionBar.setDisplayHomeAsUpEnabled(true)方法2:actionBar.setDisplayHomeAsUpEnabled(true)也可以在Manifest里面,里面的activity设置label属性。android:label="选项菜单"1 先获取到顶部导航栏。,然后在这个逻辑里面。原创 2022-12-27 20:28:00 · 1364 阅读 · 2 评论 -
ViewPager和Fragment使用(附源码)
用法数据List适配器FragmentPagerAdapterViewPager通过FragmentPagerAdapter连接两者的桥梁,里面需要重写两个方法getItem,getCount。第一个方法是获取一个Fragment,从数据源获取。第二个方法是获取数据源的大小,也就是有几页。原创 2022-12-27 19:07:28 · 1316 阅读 · 0 评论 -
ViewPager基本用法
在Activity的XML布局文件中添加一个控件——ViewPager在Java代码中找控件继承PagerAdapter类,重写必须重写的两个方法getCount和isViewFromObject。并ctrl+o,重写两个生成控件和销毁控件的两个方法。instantiateItem和destroyItem。此处我们只展示一个图片ImageView。即List。获取列表中元素的个数4.2 重写isViewFromObject判断这个View和Object是不是同一个东西。而这个原创 2022-12-27 17:58:58 · 406 阅读 · 0 评论 -
Fragment底部导航栏
一个页面以微信为例,从上到下依次是状态栏,Activity顶部导航栏,Fragment,Activity底部导航栏。每点击一个底部导航栏都会replace另一个Fragment。原创 2022-12-27 16:41:47 · 745 阅读 · 0 评论 -
Fragment之间传递数据
2)通过这个Activity对象去获取另一个Fragment的对象,通过findFragmentById/findFragmentByTag找到指定的另一个Fragment,或者Fragment作为Activity的公有成员变量直接使用。3)然后再通过此FragmentB对象去调用Fragment的setData()方法,就可以从A传递给B数据了。此时Activity就有了两个Fragment的对象,方便后续FragmentA获取FragmentB。2)此时传过去了一个接口对象。在FragmentA中。原创 2023-01-16 17:56:56 · 376 阅读 · 0 评论 -
AS执行时间计算
【代码】AS执行时间计算。原创 2022-12-17 15:32:11 · 156 阅读 · 0 评论 -
Android优化版ListView(附源代码)
(4)然后就是比较难理解的Java自定义Adapter类的编写,话不多说,注释已经很详细了,这个类主要是把数据和ListView连接起来,在主函数中调用此类,最重要的就是getView()方法,灵活度高。//定义数据//定义上下文//定义xml布局文件(也可以直接设置,此处是为了通用度高)//让主函数传参过来(数据,上下文,xml布局文件)}//下面三个重写函数基本不变@Override}@Override}@Override}原创 2022-11-28 16:03:55 · 430 阅读 · 0 评论 -
Android安卓——SimpleAdapter的简单使用
本文是博主对Adapter(适配器)的一些理解,为了加深对Adapter的理解以及记录自己的阶段学习而写,同时也适合初学者阅读,参考本条博客的逻辑进行学习。(3)前两个都很简单,第三个是Java主代码,我没有分开写(纯属懒了)最后效果图,因为还设置了一下颜色和主题,所以有点不一样。(1)写了三块代码,一个是XML主布局。menu的xml文件设置,图要自己找哦。(2)第二个是怎么布局的XML代码。原创 2022-11-28 16:29:41 · 326 阅读 · 0 评论 -
Android——RecyclerView简单实现及Viewbinding优化
本文是博主对Adapter(适配器)的一些理解,为了加深对Adapter的理解以及记录自己的阶段学习而写,同时也适合初学者阅读,参考本条博客的逻辑进行学习。原创 2022-11-29 16:33:47 · 1378 阅读 · 0 评论 -
Android_三种常用Menu菜单(附源码)
浅浅记录一下我写菜单的代码,我写了一共有三种菜单,从常用到不常用。原创 2022-11-29 17:52:29 · 3222 阅读 · 0 评论