- 博客(18)
- 收藏
- 关注
原创 Android Activity四种启动模式及任务栈
栈结构我们先来简单聊聊什么是栈吧:栈作为一种常见的线性数据结构,具有仅栈顶元素可见与LIFO后进先出的特性。栈是一种非常简单的数据结构,方法也很少,常用的就是三种:push入栈 pop出栈 peek查看栈顶元素。借用一张图,清晰明了:当然,栈其实就是一种抽象概念,一般我们都是用数组表或者是单链表来实现。在Android中,我们常用任务栈(Task)来管理一个或多个A...
2019-01-18 17:35:32
604
原创 Android Annotation 最全面直白的解析
初级程序员使用别人的框架,中级程序员不仅会使用别人的框架还知道内部的实现原理,高级程序员则按需求编写自己的框架。而在Android 开发中,很多常用的第三方库都会使用到注解来实现,比如 ButterKnife、EventBus 等,通过一个标注来说明当前类/方法/变量的意义或是赋值,从而使得代码的可读性变强。那么今天我们就来聊聊这些主流框架中不可或缺的基石(休斯敦MVP-哈基石
2018-12-18 18:36:01
485
原创 Android WallpaperManager 同时设置桌面壁纸与锁屏的问题
最近项目中,需要给手机设置桌面壁纸与锁屏。大家都知道使用 WallpaperManager.setStream()方法就好@RequiresPermission(android.Manifest.permission.SET_WALLPAPER)public int setStream(InputStream bitmapData, Rect visibleCropHint, ...
2018-11-16 16:55:48
15525
2
原创 一个绚丽的自定义View——遥控冒泡瓶子
最近在网上看到几个不错的动画,抽空整合了一下,先来看看效果吧~上部分的半圆弧控制器,可以用来控制气泡的刷新及上升速度。下部分的两个圆弧控制器分别用来控制瓶中水的颜色与气泡的颜色变化。看起来不错吧~哈哈。(在真机上运行挺流畅的,转成gif后就感觉有点卡顿了)原理其实挺简单的,冒泡效果就是开启一个线程后定时刷新气泡的位置;圆弧控制器就是根据手指触摸位置,计算出当前滑动处的颜色数值,再赋...
2018-11-08 19:31:29
269
原创 PopupWindow显示时,Activity隐去界面出现的闪屏现象
测试提出一个bug,简单记录下[Test Procedure] 1.Launch xxx->ringtones->play a song->tap settings icon->tap home key->launch xxx again. [Actual Result] 1.Ringtone page will be flickering; [Expec...
2018-11-06 18:19:32
1922
1
原创 Android APP 主动杀死进程后又重启的情况分析
最近有一个需求,在APP内点击某按钮后跳转到Launcher的某页面,同时杀掉自身APP。一个很简单的需求,结果实现起来却出现了问题。。。T T最开始,我就想着直接用 android.os.Process.killProcess(android.os.Process.myPid());或者System.exit(0);大家知道这两个方法,都可以杀掉当前app的进程,但是当...
2018-10-13 18:07:00
13670
1
原创 Android O 之 NotificationChannel
最近遇到用户提的一个BUG,应用通知管理里的文案没有翻译,如下:项目中都找不到相关的字符串,一脸懵逼,deamon、default这从哪来的呢?一通搜索,终于在一个集成的aar包中发现了相关字串。原来在 Android 0之后,app发送的每个通知都必须依附于一个NotificationChannel,每个notification对象必须发送到指定的NotificationChanne...
2018-10-11 20:12:45
1905
原创 Android AIDL最简单易懂的使用与解析(2)
在上篇文章 Android AIDL最简单易懂的使用与解析(1)中,我们学会了如何编写一个简单的 AIDL 来进行跨进程通信,本着知其然更要知其所以然的道理,在这一篇中我们就来具体看看 AIDL帮我们生成了一套基于 Binder 的怎样的接口吧~我们先来看看testAIDL的结构:可以看到,testAIDL是一个接口,继承了 IInterface,而IInterface 就是进程间通信...
2018-09-12 19:20:51
248
原创 Android AIDL最简单易懂的使用与解析(1)
我们先来简单介绍下什么是AIDL及它的使用场景:说起AIDL(Android接口定义语言:Android Interface Definition Language),大家都知道在Android中,我们可以利用其来进行IPC(Inter-Process Communication,进程间通信)。先来看下官方文档中对AIDL的一段描述:注:只有允许不同应用的客户端用 IPC 方式访问服...
2018-09-06 15:02:53
449
原创 Android并发:Java线程中断(interrupt、isInterrupted和interrupted)
最近在做一些并发任务使用线程池的时候,发现当我们需要退出任务关闭线程池时,有 shutdown() 与 shutdownNow() 两个方法。这里对这两个方法不做过多的深入研究,它们的不同点就是:shutdown() 只会结束线程池中未执行的任务,shutdownNow() 则直接结束全部任务,而它们结束任务的原理本质都是一致的,就是通过遍历线程池中的线程,然后逐个调用 Thread.interr...
2018-08-28 18:05:30
2704
原创 Android 7.0后访问文件权限:android.os.FileUriExposedException 的异常
最近项目中有一个很简单的需求:就是用系统自带图库打开在APP中下载的图片,结果就遇到了android.os.FileUriExposedException: file:///storage/emulated/0/Pictures/xxx.jpg exposed beyond app through Intent.getData()的异常。原来从Android 7.0开始,谷歌收回了访问...
2018-08-15 19:16:00
6101
2
原创 Android 7.1 ShortcutManager(应用快捷方式)的超简单使用及一些可能遇到的BUG
最近开发中,需要为应用适配上快捷方式,然后遇到了快捷方式的语言不能随着系统本地语言切换而改变的BUG,这里就顺便简单记录下 ShortcutManager 的使用吧。首先简单解释下什么是 ShortcutManager(应用快捷方式):这是在Android 7.1后添加的新功能,即长按Launcher 桌面上的APP图标,会根据你项目中编写的相应代码,显示一列快捷方式图标。点击不同的快捷方式即...
2018-08-14 19:37:52
3386
2
原创 Android最简单的自定义布局Notification
在日常工作中,经常会需要使用到自定义布局的Notification来执行一些操作,这里就来总结一下基本的使用与一些有可能遇到的坑吧。大家都知道 Notification 的自定义布局是通过 RemoteViews 来实现的,其实挺简单的,直接来看代码吧: NotificationManager manager = (NotificationManager) ...
2018-08-06 19:03:06
5674
原创 Android IntentService最直白的解析
我们都知道Android消息机制是可以用来执行异步任务,而上一篇 Android HandlerThread最直白的解析 中,我们又聊过了HandlerThread,那么现在我们就来聊聊Android多线程中另一种常见的用法 IntentService,其内部线程的切换实质就是用 HandlerThread 来实现的。首先用一段很直白的话来简单总结下什么是 IntentService及它的作用...
2018-08-04 18:47:33
336
原创 Android HandlerThread最直白的解析
在之前的文章 Android最简单易懂的消息机制(Message MessageQueue Handler Looper)中,我们分析了Android 消息机制中的Message MessageQueue Handler 和Looper,但其实在日常消息机制的使用中,HandlerThread的身影也经常出现,对于一些初学者来说也许很懵逼,那么HandlerThread到底是什么呢?首先用一段...
2018-08-03 19:37:51
188
原创 Android最简单易懂的消息机制(Message MessageQueue Handler Looper)(2)
在上篇文章 Android最简单易懂的消息机制(Message MessageQueue Handler Looper)(1) 中,我们已经聊过了Looper MessageQueue 与 Handler,现在就来一起看看消息机制中传递的载体Message吧~Message首先来看一看官网中对Message的介绍及属性描述:Defines a message containing a...
2018-08-02 18:50:28
217
原创 Android最简单易懂的消息机制(Message MessageQueue Handler Looper)(1)
我笃定,只要大家耐着性子看完,那么就能将Android消息机制玩弄于鼓掌之间了。吼吼~首先用一段很直白的话简单总结下我所理解的Android 消息机制:在每一个线程中都会有一个唯一的Looper(子线程中需要自己手动去创建),此Looper会创建一个唯一的MessageQueue,然后该Looper会无限循环不断从该MessageQueue中读取消息Message(若消息队列为空时,线程则...
2018-08-01 19:54:12
448
原创 Android监听Home键
点击home键会接收一个广播:Intent.ACTION_CLOSE_SYSTEM_DIALOGS则我们注册接收这个广播即可 private void home() { IntentFilter intentFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); Home...
2018-01-10 13:51:52
215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人