Android
文章平均质量分 93
祁门路搅屎王
与其感慨路难行,不如马上回家
展开
-
移动端接口开发规范
1.API命名规范1.1 URL提供给外部渠道使用(PC、app、H5、第三方合作平台)app:/app/refund/create运营系统:/operation/refund/create商家端:/merchant/refund/create依次类推 xxx渠道:/xxx/controllerName/actionName**范例:**https://api.weibo.com/2/friendships/friends.json**当前:**http://192.16原创 2020-07-22 10:42:33 · 2030 阅读 · 0 评论 -
Room数据库存储自定义数据类和List类型以及碰到的一些坑
Room数据库是Google官方Jetpack框架中推荐的数据库组件,虽然其速度和不使用Sqlite的Realm数据库比还是有一些差距,但是其可以直接返回LiveData对象或者RxJava的Observable对象,使用起来十分方便。之前我写过两篇有关于Room的博客LiveData结合Room数据库使用以及线程问题:https://blog.csdn.net/weixin_44666188/article/details/105500779Android使用AIDL共享Room数据库:https原创 2020-05-25 14:06:25 · 5352 阅读 · 5 评论 -
基于UDP广播的局域网匿名聊天APP
一天天太能心血来潮,昨天在看UDP的时候突然手痒想写一个基于UDP的聊天app,想着挺简单结果搞了很久才搞出来。话不多说,上代码。这个项目使用Jetpack框架搭建,Kotlin编写。1. UDP通信工具类import android.text.format.Formatterimport android.util.Logimport com.psychedelic.udpchat.ChatEntityimport com.psychedelic.udpchat.FROM_OTHERSimpo原创 2020-05-10 15:28:05 · 1035 阅读 · 0 评论 -
RxJava在Android中的使用与扩展
虽然现在写RxJava可能都算考古了,但是毕竟是Google爸爸都推荐使用的框架,还是写一哈吧。以前对于RxJava其实也都是看别人的博客,也没有抽出时间好好去整理一下知识点,今天就用这篇博客巩固下之前的知识,查缺补漏吧~RxJava1. 简介1.1 官方介绍1.2 依赖1.3 Hello World 示例代码1.4 RxJava3 新特性1.5 技能树2. RxJava中使用的设计模式3. ...原创 2020-05-07 23:37:40 · 3147 阅读 · 0 评论 -
Android指纹校验与生物识别的使用
Android在6.0的时候提供了官方的指纹模块API,最近在使用的时候发现以前的FingerprintManager已经被标识为过时了。Android 8.0 整合了一套生物识别模块,指纹识别使用BiometricPrompt来调用。官方文档:FingerprintManager官方文档:BiometricPrompt写代码用过时API当然没排面啦,于是我转用了BiometricPro...原创 2020-05-01 19:15:03 · 1478 阅读 · 0 评论 -
Android同步方法中异步操作获取返回值。
大家都知道Android中UI操作必须放在主线程中,耗时操作比如网络请求和数据库查询需要放在子线程中。为此Android提供了像Handler和AsycTask这样的框架来给开发者使用。通常情况下我们都是在子线程中耗时获取数据后再通知给主线程去更新UI,但也有些其他的情况。我曾经有一次面试的时候被问到一个问题,子线程中进行耗时操作,主线程如何同步获取这个子线程执行的结果?也就是实现一个异步操作的...原创 2020-04-18 21:16:37 · 5269 阅读 · 0 评论 -
Android使用AIDL共享Room数据库
什么是AIDL:AIDL(Android Interface Definition Language),翻译成中文就是安卓接口定义语言的意思,是用于定义服务端和客户端通信接口的一种描述语言。其主要作用是IPC(Android进程间通讯),简单的来说就是AIDL可以让一个APP使用另外一个APP的Service,使得两个或者多个APP之间可以信息交互,使得多个APP之间只需要使用一套代码,这样对于...原创 2020-04-17 16:39:24 · 2667 阅读 · 0 评论 -
LiveData结合Room数据库使用以及线程问题
在LiveData的官方文档中有提到LiveData可以和Room数据库一起使用也就是说Room查询时可以直接返回一个LiveData对象,给这个LiveData对象添加观察者之后只要数据库数据发生改变都可以收到回调。Room的使用不在这里说了,直接贴上代码添加依赖: androidTestImplementation "android.arch.persistence.room:...原创 2020-04-15 00:37:50 · 8846 阅读 · 4 评论 -
Android Jetpack框架-LiveData简单使用
官方介绍:LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。如果观察者(由 Observer 类表示)的生命周期处于 STARTED 或 RESUMED 状态,...原创 2020-04-13 21:57:30 · 1533 阅读 · 0 评论 -
Android广播的分类与使用
广播在Android开发中的使用十分广泛,其功能由发送者和接收者两部分组成,与现实中的广播类似,广播台通过信号塔发射广播信号(发送广播),用户通过收音机(广播接收者)来接收广播内容。其中广播接收者是Android的四大组件之一。1.广播的基本使用:1.1 创建并发送广播:广播发送时也是使用Intent作为载体的 Intent intent = new Intent(); ...原创 2020-04-11 23:53:09 · 2565 阅读 · 0 评论 -
升级Android Q API 29File无权限问题
最近重构之前的项目,target sdk 干脆就设置到29了,结果遇到了之前没有遇到的一些问题,在这总结一下。1是使用File去创建图片文件的时候一直不成功,看log是显示没有权限,但是我的清单文件中已经申明了相关权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> ...原创 2020-03-19 16:05:09 · 2034 阅读 · 0 评论 -
Android禁止截屏
1.禁止截屏还是这两天看剧的问题,花了25搞了超前点播,发现超前点播只能在移动端使用,应该是为了版权问题。在Android设备上发现播放的时候无法截图,录屏是黑色的。这让我想起了安全键盘的问题。前几个月我的手机屏幕摔了一下,外屏没有事但是内屏漏液了,屏幕全黑,为了把数据导出来我用AI唤醒无线投屏用笔记本电脑看的手机屏幕,还挺顺利的,但是当我想要恢复出厂设置的时候需要输入云端密码,这个时候Edit...原创 2020-02-01 01:29:46 · 2747 阅读 · 0 评论 -
啤酒瓶盖酒瓶兑换问题
昨儿看爱情公寓5,剧里面偷了道题目啤酒2块钱一瓶,4个瓶盖或者2个空瓶能再换1瓶啤酒,问10块钱最多能喝多少瓶啤酒。这道题明显是一道递归算法题,弹幕里很多人算出来是15瓶,但是赵海棠最后得出的答案是20瓶。其实都是正确答案,15瓶是指所有的啤酒都是自己买的情况下,最后剩下3个瓶盖和一个空酒瓶,喝了15瓶啤酒。而20瓶的答案是通过先预支20瓶啤酒得出的。预支20瓶啤酒喝掉后剩下的瓶盖和酒瓶可...原创 2020-01-21 19:53:26 · 7804 阅读 · 3 评论 -
Android Jetpack框架-Lifecycles
介绍Lifecycles是Jetpack框架组件之一,使用观察者模式追踪Activity或者Fragment的生命周期,以避免在Activity或者Fragment的生命周期方法中加入太多逻辑,降低代码耦合性,去除重复代码并且防止内存泄漏。官方介绍:生命周期感知型组件可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。这些组件有助于您写出更有条理且往...原创 2020-01-19 16:17:42 · 1300 阅读 · 0 评论 -
Android小窗口模式,picture-in-picture(PIP画中画)的使用
1.介绍Android8.0的时候推出了画中画模式,可以让Activity缩小显示在其他Activity上方。当初我维护的项目本身自己实现了这个功能,Android加入画中画之后两个功能并行,互相交互的时候出了一大堆问题。现在几乎所有的视频软件都加入了这个功能。使用方法十分简单,但是需要处理好AudioFocus的问题。2.参数介绍在Android 8.0时候,只需要调用Activity...原创 2020-01-12 20:53:45 · 8910 阅读 · 4 评论 -
写了一个不太成功的“流氓”app~
前言昨天闲来无事想试试语音识别,本来想用讯飞的SDK的,但是我用百度搜索的,百度sdk第一条,我就偷个懒用了百度的SDK,实现起来果然很懒。然后突发奇想反正是个demo,不如恶搞一下,弄成只有念出特定的话才能退出APP。本来认为重点是看百度语音识别SDK文档,结果实际上手才发现不给用户退出才是大坑。Android早几年的版本十分容易实现,然而8.0之后权限管理十分严格,各大厂商客制化的时候变得更...原创 2020-01-08 16:11:51 · 2356 阅读 · 0 评论 -
EditText软键盘遮挡UI的一些坑
之前写一个类似微信聊天界面的时候碰到了这个坑,本来认为EditText这种基础控件没啥好说的,没想到被软键盘坑了,网上找了很多方法都没有用,想了想还是整理一下。碰到的问题很常见,EditText获取焦点后弹出软键盘遮挡住了聊天记录UI。如下图所示:当时想着这个问题很好解决嘛,不就是设置activity的windowSoftInputMode属性嘛? android:windowSoftI...原创 2020-01-06 17:28:58 · 1490 阅读 · 1 评论 -
Android屏幕旋转问题
Android Activity横竖屏切换具体使用Android面试中关于生命周期肯定会问到Activity在旋转时生命周期的变化,基本上大家都知道如果不设置android:configChanges="orientation|keyboardHidden|screenSize"Activity会重新执行一遍生命周期,也就是Activity会销毁再Resume。如果设置了上述属性,那么横...原创 2020-01-05 15:38:43 · 1998 阅读 · 2 评论 -
Android Handler详解
1.前言Handler是Android最重要的知识点,无论你是初级开发者还是大牛,Handler都是你必须要了解的。它的作用是线程间通讯,由于Android中只允许在主线程中更新UI,而且又有ANR机制,主线程中不应该处理耗时问题.那么在通过网络接口获取数据的时候就一定需要子线程中操作,然后通知主线程去更新UI。于是Android中提供了Handler机制去解决这个问题。当然这也是几乎所有And...原创 2019-12-31 00:07:43 · 1755 阅读 · 2 评论 -
Android面试整理,附答案
Android基础1. 四大组件是什么?Activity,Service,BroadcastReceiver,Content Provider2. Activity 的生命周期?4. Activity 之间的通信方式?Intent借助类的静态变量借助全局变量/Application借助外部工具– 借助SharedPreference– 使用Android数据库SQLite...转载 2019-12-12 01:24:05 · 2756 阅读 · 0 评论