Android开发
文章平均质量分 75
若邪〃
若想学习,就强迫自己去做不会做的事情
展开
-
Android9.0源码APP启动流程
本文使用到的相关源码路径:Android9.0 APP启动源码1、启动简介1.1、启动流程:点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;system_server进程接收到请求后,向Zygote进程发送创建进程的请求;Zygote进程fork出新的子进程,即App进程;App进程,通过Binder...原创 2020-02-01 19:24:55 · 892 阅读 · 0 评论 -
AIDL中的数据流向
文章已同步github博客:AIDL中的数据流向1、AIDL文件1.1、文件类型文件后缀名为.aidl;1.2、数据类型1.2.1、默认支持类型默认支持的类型不需要导包;Java八种基本类型:byte、short、int、long、float、double、boolean、char;String类型;CharSequence类型;List类型:List中的所有元素必须是AID...原创 2019-12-26 02:18:55 · 688 阅读 · 2 评论 -
Android发送邮件
在Android开发中,邮件发送一般常用两种方式,一种是调用系统的邮箱来放,另一种是自己去编程实现邮件的发送,第一种方式比较简单,通过Intent的隐式意图去打开系统的邮箱,并通过intent的传值指定收件人(抄送、密送等)、主题和内容,这个比较简单,这里就不再介绍,主要是介绍一下第二种方法,即自己定义邮件发送的工具类。一、创建邮件实体类public class MailInfo {p原创 2016-08-04 17:20:30 · 924 阅读 · 0 评论 -
Android蓝牙开发入门
在Android开发中不免会涉及到蓝牙的使用,尤其是在物联网发展迅速的现在,好多设备都是通过蓝牙来连接的,今天我们就简单的了解一下Android开发蓝牙,这里只是对蓝牙简单的做一个入门的解释,后面会继续对蓝牙的各个功能深入去讲解。 首先,在Android手机上开发蓝牙操作,需要用到android.bluetooth包,其中BluetoothAdapter是蓝牙开发中的核心类,代表原创 2016-08-10 16:23:27 · 1023 阅读 · 0 评论 -
Android HashMap源码解析
在Android中,HashMap也是经常用到的,这里我根据源码简单分析一下HashMap 首先我们一般从构造方法看起,在看构造方法之前,我们先了解一下HashMapEntry这个类,源码如下: static class HashMapEntry implements Entry { final K key; V value;原创 2016-09-19 15:54:03 · 782 阅读 · 0 评论 -
Android ConstraintLayout布局的使用
在今年的Google I/O大会上,Google推出了Android Studio2.2,同时也推出了一种新的布局ConstraintLayout布局,称为约束布局,本文我们就来简单了解一下这个新布局的使用方法,其实ConstraintLayout跟RelativeLayout是有一些相似的,只是用起来更方便,并且是可以直接完全通过拖拽界面元素去设计布局,下面链接是Google官方的原文链接:原创 2016-11-11 12:40:10 · 918 阅读 · 0 评论 -
源码分析commitAllowingStateLoss() 和commit()的区别
之前在使用Fragment的时候偶尔会有这么一个报错,Can not perform this action after onSaveInstanceState,意思为无法再onSaveInstanceState之后执行该操作,这个操作就是指commit(),之前也没怎么在意,后来通过查看源码去了解了一下这个问题,以下是对这个问题的解析及对应解决办法的对比。 Fragment是我原创 2016-10-26 11:20:04 · 26939 阅读 · 6 评论 -
Android Studio一些常用的快捷键
Android Studio使用起来的确方便很多,但是之前习惯用Eclipse的人会觉得有些头大,因为快捷键的问,在EC中的快捷键都已经用到烂熟,而在AS中却还需要重新记,这里我也遇到了同样的问题,为此,将一些常用的快捷键记录下来,方便以后查看(随时更新): (一些类似于Ctrl + C,Ctrl + S这类快捷键就不再这类浪费篇章了) Al原创 2016-12-06 16:19:55 · 414 阅读 · 0 评论 -
WebView与Js交互-JsBridge的使用
这里写自定义目录标题前言github地址功能使用方法添加依赖推荐方式简单封装JS库文件判断手机类型设置Android手机桥接设置IOS手机桥接设置Android和IOS统一桥接口JS调用函数JS库文件整体代码Html页面设置Android端使用(这里省略IOS,用法基本相同)xml布局设置Java代码(客户端调用)注册webview监听Java主动调用Js函数测试截图前言在WebView的开发...原创 2019-05-17 11:42:12 · 9709 阅读 · 2 评论 -
View、ViewGroup的事件分发机制
1、事件概念 当发生点击事件时,大致的调用顺序是先调用最外层View的dispatchTouchEvent方法,然后调用onInterceptTouchEvent方法,再调用onTouchEvent方法; 分发、拦截、消费,一个事件的所经历的就是这些处理的组合; &n...原创 2019-09-17 01:04:48 · 1258 阅读 · 0 评论 -
Android中数据存储----偏好设置
偏好设置也是Android中的数据存储方式的一种,它是以键值对的形式来存储数据的,用来存储一些比较小型的数据,我们在实际开发中,是经常会用到的,而且用户在平常的使用中,也会在不停的使用,偏好设置还是挺方便的。 偏好设置 作为一名Android的开发者,你不可以不知道偏好设置,对于一下较小的数据,以键值对形式保存的数据,我们可以采用偏好设置来存储,例如用户是否选择打开wifi、用户设置的字原创 2015-12-31 12:13:02 · 3109 阅读 · 1 评论 -
@SuppressLint("DrawAllocation")作用和解决方法
在Android自定义控件中,经常会遇到这样的一些警告(如下图),这些警告如果不去处理的话,并不会影响我们程序的正常运行,但是总有强迫症的人看了会觉得很不爽,比如我就是其中一个。 其实,既然程序会报出这样的警告,肯定就会有他的不合理之处,只是并不会导致程序发生错误无法运行,我们写的代码平时也不多,所以一般对我们的程序不会有多大的影响,但是他会影响整个程序的安全性及一些其他性能,所以我们还是尽量原创 2016-02-26 17:06:52 · 5235 阅读 · 0 评论 -
Parcelable接口的使用
在Android开发中,我们经常需要传递数据,但是,在传递时候,如果我们需要传递的数据类型是自定义的数据类型,我们就需要将其序列化之后再进行传递。 Android中序列化对象有两种方法 1、实现Serializable接口,实现Serializable接口是JavaSE本身就支持的,该方法只需要将自定义数据类型实现该接口即可; 2、实现Parcelable接口,Pa原创 2015-12-09 01:24:25 · 612 阅读 · 0 评论 -
Android自定义控件
在Android开发中,大家经常会提到自定义控件的问题,对于好多初学者来说,可以说谈之色变,其实自定义控件并没有那么难,下面我就带大家通过写一个自定义控件—–通讯录右侧的导航字母,来解释一下自定义控件的使用。 在解释之前先给大家看一下运行的具体效果,由于我不会截取动态图,所以就普通图片给大家看一下啦,我们要实现的就是如下图中右侧的字母导航,我们可以点击右侧的某个字母来直接快速查找首字母为该字母原创 2015-12-10 00:43:16 · 448 阅读 · 0 评论 -
Android中连续点击两次BACK键退出程序
在Android开发中,我们正常退出程序时,经常会设置这样一个小特色,就是短时间内连续按下两次BACK键才会将程序退出,对于这种设置,我们通常会使用两种方式来解决。 一、通过记录两次按下BACK键的时间差来判断 这种方式也比较好理解一点,我们可以设置一个第一次点击的时间变量和第二次点击的时间变量,通过两次点击的时间差是否在一个规定的时间段内即可,例如,当第二次按下时与第一次按下时的时间差原创 2015-12-21 22:57:30 · 1167 阅读 · 0 评论 -
Android中killProcess()、System.exit(0)及finish()的区别
在Android中,提起退出一个程序,大家都很熟悉,而且也会随口说出好多方式,众所周知的,我们常常能见到的如finish(),这个方法相信用到的最多了,当然还有System.exit()和android.os.Process.killProcess(android.os.Process.myPid()),但是,这些方法的用途肯定又有不同,这篇博客我们一起来看看他们之间的不同。 一、finish原创 2015-12-21 21:59:16 · 5283 阅读 · 0 评论 -
Invalidate和postInvalidate的区别
在Android实际开发中,我们常常需要进行View的刷新(例如:自定义控件等),Android中为我们提供了两组刷新View的方法----Invalidate和postInvalidate,前者是在UI线程中更新View,而后者是在非UI线程中更新VIew,两组方法的具体区别如下介绍:我们都知道,在Android中,更新UI的操作要在UI线程(也就是主线程)中进行,因为Android UI操作并原创 2015-12-06 23:45:10 · 435 阅读 · 0 评论 -
ScrollView嵌套GridView冲突解析
最近项目开发中,用到了ScrollView中嵌套GridView的情况,但是这两个View都是带有滚动的,当把其中一个嵌套到另一个里面的时候(例如我将GridView嵌套到ScrollView里面),就会出现冲突了,表现为GirdView显示不全。 解决方法也比较简单,只需要我们重新定义GridView,即自定义一个GridView,重写里面的onMeasure()方法:public clas原创 2016-03-04 13:52:35 · 730 阅读 · 0 评论