
Android
成长零一
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Android】进程通信IPC——ContentProvider
简介内容提供者为应用程序提供内容,它封装数据并通过ContentResolver将其提供给应用程序。只有在多个应用间需要共享数据的时候才需要ContentProvider。Android已经为常见的一些数据提供了默认的ContentProvider。数据提供者ProviderContentProvider需要在AndroidManifest.xml中声明。 <provid...原创 2019-06-19 19:36:15 · 346 阅读 · 0 评论 -
【笔记】ItemDecoration——分组布局GroupItemDecoration
RecyclerView中加载列表需要根据某些约定条件分组很正常,根据字符分组地区,根据月份分组账单等。如果是在item中控制是否是分组第一个显示一组的头部就显得有点low了。接下来记录下为分组列表准备的GroupItemDecoration:GroupBeanItemDecoration是分割线,添加灵活,为了对应列表中每个item,记录每个item的身份信息。一般情况下有以下四个应该是...原创 2018-12-09 15:43:27 · 934 阅读 · 0 评论 -
【笔记】ItemDecoration——网格布局GridItemDecoration
RecyclerView可以说是ListView和GridView的升级综合版,在Android5.0推出,其特点如下:1、支持不同方向、不同排版模式,实现多种数据展示形式(包含ListView、GridView、瀑布流);2、装载了ViewHolder的回收机制,无需我们考虑View的复用;3、取消了OnItemClick点击事件,需自己实现;4、可控制Item增删动画;5、...原创 2018-12-02 15:32:03 · 6807 阅读 · 1 评论 -
【APP保活】一像素保活——据说QQ也在用的黑科技
大致操作就是监听屏幕亮熄,在屏幕熄灭的时候启动一像素Activity,提高存活概率;之后在屏幕亮起的时候关闭一像素Activity。注意点:1、屏幕监听广播需要动态注册,静态注册无效,系统爸爸限制的;2、最好在一像素点Activity中检测屏幕亮暗,防止快速灭屏亮屏使监听出现问题;动态注册第一点还是简单的,动态注册广播 @Override public vo...原创 2018-09-09 12:37:42 · 2015 阅读 · 0 评论 -
【笔记】Android常用应用市场发布整理
之前应用市场上架都是产品测试等人做的或者就是进公司也已经把应用市场上架的准备工作都做了的,一直也都没有机会接触应用上架的第一步,创业公司正好有机会接触到这块,记录下。应用平台发展到现在一般公司上架的差不多就是360手机助手、腾讯应用宝、百度手机助手、小米应用商店、华为应用商店、OPPO应用商店、VIVO应用商店。上架这些应用市场应用的信息都是必须的,简介、软件说明、版本说明、应用图标、应用截图...原创 2018-09-03 20:51:23 · 3680 阅读 · 1 评论 -
【项目】G客户端——一个可随时查看干货与闲读数据的客户端
这是一个根据干货集中营的网站公开的API实现的一个用于查看信息的客户端APP,使用Retrofit2+RxJava2+MVP的开发模式。一直想自己做个APP,但第一没灵感,第二觉得写接口什么的比较麻烦,索性就拿这个干货集中营的API练练手,有什么新技术也可以尝试着使用进去,个人感觉学了的东西只有用上去才知道自己掌握了多少。APP下载该项目已经上线google play,感兴趣的可以下载看看,如果有...原创 2018-07-06 21:27:15 · 643 阅读 · 0 评论 -
【笔记】Android桌面角标Badge官方文档和兼容性解决
好久没写博客了,这段时间一直在做项目忙得要死啊。然后新需求来了,领导要求做一个像iOS那样能提醒用户未读消息数量的角标。查了下资料出现频率最多的就是ShortcutBadger和ShortcutHelper,这两个项目兼容了挺多手机,但是一看这两个项目的更新时间都有点久了,使用之后也发现有好多都已经不起作用了。官方提供华为角标官方文档:华为还是蛮不错的提供了角标的详细使用,但不要忘了添...原创 2018-04-08 22:44:13 · 14006 阅读 · 10 评论 -
【笔记】Android使用RecyclerView实现树形列表升级版
这是一个功能多样的树形列表,树形列表最基本的功能是能够进行节点的收拢和展开,响应每一级节点的点击事件也是必须的,本篇说的是在我之前实现的树形列表1.0基础上修改完善之后的升级版树形列表。树形列表1.0具有如下功能:展开收拢;响应点击和选中事件;自定义每个节点的布局和保持的数据结构;升级版功能:展开收拢时不会改变子节点列表的状态,之前只记录了选中状态;升级版可以根据自己需要来设置选中子节点时是否也需...原创 2018-02-15 16:06:26 · 5045 阅读 · 0 评论 -
【笔记】Android使用RecyclerView实现可自定义节点的树形列表
树形列表的基本功能是可以展开收拢,该列表还可以响应选中、单项点击事件。使用者可以自定义需要的各级节点的布局样式,在适配器的展开、选中和单项点击回调中实现需要的效果。效果展示使用说明在项目build.gradle中添加maven { url "https://jitpack.io" }添加引用(可在github获取最新版本)compile 'com.g原创 2018-02-04 16:10:06 · 2179 阅读 · 0 评论 -
【笔记】Android Studio+Github+JitPack生成Compile依赖
随着项目的变大,模块也越来越多,Android Studio的编译速度感觉越来越慢,而且一个项目下面一大堆并列的模块这么放着感觉也不是很爽,尤其是一些基本不会再做变动的模块。Android Studio上传代码到Github,在Github上提交发行版,最后在JitPack上编译生成Complie依赖。1、在Github上有一个带有要生成依赖模块的项目2、Android Stu原创 2017-11-19 20:01:31 · 772 阅读 · 0 评论 -
【笔记】使Toast在不同版本系统下都能显示的几种方案
系统原生的Toast是用了INotificationManager类来显示的, Android 5.0以上系统用户只要关闭了通知权限,在大部分手机上Toast也将不能显示(有部分国产手机5.0以上的系统禁了通知权限仍能显示Toast)。 /** * Show the view for the specified duration. */ public voi...原创 2019-01-15 22:28:21 · 710 阅读 · 0 评论 -
【笔记】ProgressBar系统实现圆角渐变色进度条
纯色进度条最大进度100,当前进度30,二级进度60 <ProgressBar style="@android:style/Widget.ProgressBar.Horizontal" android:layout_width="match_parent" android:layout_hei...原创 2019-02-19 22:49:33 · 1751 阅读 · 0 评论 -
【Android】进程间通信IPC——Binder
Binder是Android中的跨进程通信方式,bindService的时候,服务端返回Binder对象,通过该对象客户端可以从服务端获取数据。在进程间通信IPC——AIDL中创建了ICustomAidlInterface.aidl。以下是根据ICustomAidlInterface.aidl生成的ICustomAidlInterface.Java接口类。public interface I...原创 2019-05-27 22:41:31 · 583 阅读 · 1 评论 -
【Android】进程通信IPC——Messenger
Messenger可以说是信使,用于不同进程间通信。Messenger是轻量级的IPC,内部是使用了AIDL。服务端创建Service,使用Handler参数的Messenger构造方法,具体的数据获取等操作放在Handler#handleMessage()方法中。public class MessengerService extends Service { private stat...原创 2019-05-21 22:18:43 · 208 阅读 · 0 评论 -
【Android】进程间通信IPC——AIDL
AIDL官网定义AIDL(Android 接口定义语言)与您可能使用过的其他 IDL 类似。 您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接口。 在 Android 上,一个进程通常无法访问另一个进程的内存。 尽管如此,进程需要将其对象分解成操作系统能够识别的原语,并将对象编组成跨越边界的对象。 编写执行这一编组操作的代码是一项繁琐的工作,因此 Andro...原创 2019-05-19 20:23:36 · 1232 阅读 · 0 评论 -
【Android】ThreadLocal源码阅读
在查看Handler源码的时候可以看到其必须绑定一个Looper,然后通过Looper.prepare()方法获取,而这个Looper对象则是保存在ThreadLocal中的。定义ThreadLocal在官网的描述是实现每个线程独立的变量,所有线程共享一个ThreadLocal对象,当一个线程的值改变时不会影响其他线程的值。源码1. set获取当前线程的ThreadLocalMap实例对...原创 2019-04-24 19:17:38 · 262 阅读 · 0 评论 -
【笔记】Android高版本Apache HTTPClient变更兼容和HTTP请求
Apache HTTPClient变更Android6.0取消支持 Apache HTTP 客户端Android 6.0 版移除了对 Apache HTTP 客户端的支持。如果要继续使用 Apache HTTP API,需要在 build.gradle 文件中配置:android { useLibrary 'org.apache.http.legacy'}Android9.0...原创 2019-04-28 21:22:27 · 1479 阅读 · 0 评论 -
【Android】Handler机制、源码分析、内存泄漏
Handler机制Handler机制也可说是异步消息机制,由Message,Handler,MessageQueue,Looper组成。Message:Message是线程间传递的消息,可携带少量信息,在不同线程间交换数据。Handler:Handler是处理者,可在子线程中发送Message消息,在UI线程中处理Message消息。子线程中发送的Message消息最终传递到Handle...原创 2019-04-22 21:06:43 · 169 阅读 · 0 评论 -
【Android】Service启动、远程服务AIDL、IntentService
启动方式1、startService()启动该方式启动的service可无限期运行下去,需调用stopSelf()或调用stopService()停止。当系统资源不足时,Android系统也可能结束服务。2、bindService()启动:该方法启动时,客户可通过IBinder接口与service进行通信,可通过unbindService()关闭连接。一个service可以同时与多...原创 2019-04-16 19:28:49 · 523 阅读 · 0 评论 -
【Android】Activity知识点
目录生命周期常见场景进程优先级横竖屏1、android:configChanges设置orientation或orientation|keyboardHidden或不填2、android:configChanges设置有orientation|screenSize启动模式1、standard2、singleTop3、singleTask4、singleI...原创 2019-04-06 19:15:13 · 295 阅读 · 0 评论 -
【笔记】性能优化——ConstraintLayout使用
目录相对定位包裹与填充角度定位比例定位引导线定位控件宽高比例链式布局官网对ConstraintLayout的描述是这样的:ConstraintLayout是一个允许你用灵活的方式定位和调整控件尺寸的ViewGroup。A ConstraintLayout is a ViewGroup which allows you to position and size...原创 2019-03-24 16:40:09 · 443 阅读 · 0 评论 -
【笔记】android录音权限遇到的问题和兼容8.0权限请求的方案
android6.0之后出现的运行时权限请求给开发者带来了很多的不便,但也出现了很多权限请求方面的工具类、框架,之前自己也实现过一个Android6.0之后权限请求工具类。但随着8.0的出现,之前的工具类需要做下调整,而且在实际的使用中也出现了部分手机权限请求类无法解决的问题,这里记录下这些天在录音权限上遇到的坑。部分6.0以下手机不兼容情况部分6.0以下的手机在录音权限被原创 2017-11-02 19:07:40 · 13359 阅读 · 1 评论 -
【笔记】蓝牙BLE开发记录
一直没有养成随时记录的习惯,这里记录一些蓝牙BLE开发使用中遇到的问题。BluetoothGatt status 133这个错误状态发生在连接时,每次连接数超上限的时候就会出现,一般在使用中用bluetoothGatt.close()释放当前Gatt连接资源。打开通知时回调onDescriptorWrite returns status 128开发中需要根据设备的属性值blueto原创 2017-09-20 19:42:48 · 1661 阅读 · 0 评论 -
【笔记】阿里非侵入式热修复方案Sophix
上周看到一篇关于阿里公测的热修复Sophix的文章——阿里推出业界首个非侵入式热修复方案Sophix,颠覆移动端传统发版更新流程!文章中有一张关于Sophix、Tinker、Amigo的对比图片,之前使用Tinker感觉也还可以,但既然Sophix说更好,那就当然要尝试下了,而且Tinker不能修复加固的APK还是有点不足的。简单使用Sophix的使用就像图上说的那样,原创 2017-06-19 23:46:11 · 1308 阅读 · 0 评论 -
【笔记】Android NotificationListenerService监听短信、来电、微信、QQ等通知消息
最近和一个做手环的公司对接,封装了一堆蓝牙的接口,然后那些消息的监听什么的不给,只能自己去实现。不得不说非常幸运,NotificationListenerService正好是API 18开始加入的,而蓝牙BLE最低支持的就是18。根据API的描述,我们发现只需要两步就能实现通知的监听:1、实现Service创建一个实现NotificationListenerService的原创 2017-05-22 23:00:07 · 9983 阅读 · 2 评论 -
【笔记】兼容Android7.0的图片选择工具类
Android6.0增加了运行时权限请求,Android7.0又限制了文件的访问权限,不知道以后还会限制什么其他的。要实现兼容Android7.0的图片选择,首先拍照需要兼容6.0的权限请求,幸好之前整理过Android6.0之后权限请求工具类;接下来就是对Content Uri和File Uri使用进行修改,兼容7.0的文件访问权限的限制。核心方法将Uri转换成Content原创 2017-05-02 21:37:22 · 370 阅读 · 0 评论 -
【笔记】Android Studio中使用NDK-JNI
这些天一直在搞关于JNI的东西,重拾一下C++,翻一翻NDK的API。NDK的使用第一反应是直接调用底层一些C/C++的东西,另一个众所周知的功效就是高效,其实我觉得相比较Java部分而言,JNI也更加安全,从反编译方面来看,Java部分的代码也好,逻辑也好,即使做了混淆之类的一些防范性措施,想知道依然还是蛮容易的,这不是说使用了JNI就绝对安全了,我个人认为至少比Java直接写的安全些。原创 2017-04-16 15:06:17 · 357 阅读 · 0 评论 -
【笔记】Android6.0之后权限请求工具类
android6.0开始对权限的管理越来越严格,权限请求非常烦躁,是要通过一个请求权限requestPermissions、一个权限请求回调onRequestPermissionsResult以及一个显示权限请求解释shouldShowRequestPermissionRationale。我将权限请求封装成了工具类的形式,使用过程中还是在需要使用到权限的地方使用requestPermissio原创 2017-03-26 20:54:33 · 838 阅读 · 1 评论 -
【笔记】EventBus简单使用Demo
EventBus很早就已经流行并使用了,但是由于种种原因一直没踩坑。EventBus是针对Android的发布/订阅事件总线。EventBus3.0是当前最新的版本,它与之前版本相比较,加入了注解使代码更加简洁,使用更加方便。主要功能:在Activity,Fragment和线程之间传递消息。优点:1、简化了组件之间的通讯(解耦了发送者和接受者,避免了复杂和容易出原创 2017-03-29 21:51:15 · 460 阅读 · 0 评论 -
【笔记】Android 通用混淆记录
在proguard-rules.pro中添加项目的混淆规则,此处记录通用混淆#WebView with JS-keepclassmembers class fqcn.of.javascript.interface.for.webview { public *;}#指定代码的压缩级别-optimizationpasses 5#包明不混合大小写-dontusemixedcase原创 2016-11-20 19:21:08 · 459 阅读 · 0 评论 -
【笔记】Android Studio Gradle配置dex分包
原因当app的方法数超过65535时生成的apk将无法安装,此时需要进行分包,在打包时将应用的代码分成多个dex,使住dex的方法数不超过系统限制。应用在启动或运行过程中,首先是主dex启动运行,再加载从dex。分包Gradle是android studio的构建工具。随着Gradle的升级完善,功能越来越强大,但改变也随之而来。具体不知道是从哪个Gradle版本开始的原先使用原创 2016-11-20 19:01:22 · 6599 阅读 · 2 评论 -
【笔记】Android悬浮窗使用兼容6.0
一直都感觉悬浮窗是个非常好用的东西,无论在什么界面上都能显示不受activity等限制。但是随着Android版本的不断升级,使用却变得越来越麻烦。坑1、3.0之后获取正在运行的任务需要声明权限了;在AndroidManifest.xml中声明权限 坑2、5.0之后原先获取正在运行任务的getRunningTasks被废弃了,可以使用usage代替,但查看应用使用情况原创 2016-12-02 00:19:51 · 1150 阅读 · 0 评论 -
【笔记】RxJava2.0新特性简单介绍并实现RxBus
RxJava2.0新特性简单总结介绍下:不再支持传null,传了直接正常结束或者抛异常;Observable不再支持背压,新加入Flowable支持非阻塞的背压,并且所有操作符都强制支持背压;Single类可单独发送onSuccess或onError消息;Completable只是改变了命名;新增Maybe,可以说是Single和Completable结合体,只能发送0或1个事件或错误原创 2017-07-20 21:37:25 · 960 阅读 · 0 评论 -
【笔记】PackageManager获取App基本信息实现Apk导出、分享、卸载
隐约记得之前某个应用商场有个App分享的功能,这个应用分享不是发个下载链接地址,而是通过把本地App发送给其他用户的形式。这几天正好想给朋友发个工具App,但就是找不到这个功能的应用,网上也没找到这个工具App的下载链接(主要是自己也不知道之前从哪下载的了。。。)获取已安装应用列表 PackageManager packageManager = getPackageMan原创 2017-07-23 13:50:42 · 1756 阅读 · 0 评论 -
【笔记】仿支付宝密码输入框
继承EditText实现一个仿支付宝密码输入框。自定义属性 <com.sjl.pwdedittext.view原创 2016-11-29 23:16:26 · 518 阅读 · 0 评论 -
【笔记】通讯录使用侧栏字母索引
侧边字母索引在通讯录、地区选择之类的长listview中比较实用。自定义Viewpublic class SectionIndexBar extends View { //索引 private String[] indexs = {"#", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",原创 2016-12-11 17:51:09 · 2701 阅读 · 0 评论 -
【笔记】android滑动菜单
万恶的产品总是没事找事,侧滑菜单这种东西感觉都已经过时了,却还要用。实在没办法只能找了下资料,这里自己把认为实现起来比较容易的方法做下记录。DrawerLayout + NavigationView布局<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/re原创 2016-12-20 22:37:38 · 347 阅读 · 0 评论 -
【笔记】自定义控件——ViewPager指示器
ViewPager的用途很广,像滚动广告、引导页等就常用这个控件实现,而在这些控件里常常会需要一个指示器来表示当前所显示的是第几张广告或第几页。不堪回首的过去以前在滚动广告时常常在布局文件中放一个LinearLayout,然后在代码中动态创建ImageView,添加到容器中,dotList = new ArrayList();for (int i=0;i<list.size();i+原创 2017-03-19 17:42:44 · 558 阅读 · 0 评论 -
【笔记】简单实现可向周围展开的菜单容器
前些天在谷歌开发者公众号上看到一篇文章——取舍的艺术:Evernote。其中有说道一个效果,在悬浮按钮上应用快捷指令的设置,点击展开后呈现六种不同的记录笔记的方式,结合菜单展开时的动画效果,让人眼前一亮。大致思考了一下,可以将这样的菜单分为两部分,一部分是一直显示着的悬浮按钮,另一部分是带有动画效果可以展开消失的菜单部分。LinearLayout的线性布局显然很适合,可原创 2017-03-23 21:48:22 · 580 阅读 · 0 评论 -
【笔记】ViewPager+自定义控件实现的日历控件CalenderView
接入OEM模块,产品想要人家App上的日历控件,只能乖乖自己写一个。。。需求实现一个能左右滑动的,带选中日期效果的日历控件。看到左右滑动,第一反应就是ViewPager,现成的就是方便。接下来要实现的就是每月的日历了,并且可以点击选中某一天。无限滑动ViewPager先把简单的实现了,理论上来说,日历应该可以一直往前翻,或者一直向后翻,就是一个可以无限滚动的ViewPage原创 2017-06-24 15:11:31 · 1047 阅读 · 1 评论