android
huangjie_android
这个作者很懒,什么都没留下…
展开
-
android 中Service 和activity之间的数据传递的几种方法
1、原始数据类型: 在Activity/Servier之间传递临时性的原始数据,可以使用Intent的putExtras方法来传递数据。若传递的数据需要长久保存,则使用SharedPreference类来完成。2、传递对象。 当在Activity/Servier之间传递不需要长久保存的对象时,可以使用以下几种途径: (1)通过Applic原创 2015-11-03 20:10:49 · 3143 阅读 · 0 评论 -
Rxjava使用入门
什么是 ReactiveX? ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。 实时数据处理是一件普通的现象,有一个高效、干净和可扩展的方式来处理这些情景是重要的。使用 Observables 和 Operators 来熟练操作它们。ReactiveX 提供一个可组合又灵活的 API 来创建和处理原创 2018-01-21 16:51:14 · 6714 阅读 · 0 评论 -
Android 开发中使用硬件加速
前言 我们平时在开发Android的时候,经常会接触到硬件加速这个词,因为我们一般都是在应用层做开发,几乎不怎么接触硬件,其实操作系统已经把底层硬件封装的很完善了,我们并不需要去写C语言就能开启硬件加速。开启硬件加速其实非常简单从Android 3.0(API级别11)开始,Android 2D渲染管道支持硬件加速,这意味着在View画布上执行的所有绘图操作都使用GPU。由于启用硬原创 2017-11-18 23:10:11 · 14216 阅读 · 0 评论 -
Mac下完全卸载干净Android Studio
第一步: 卸载Android Studio应用及相关配置在终端中输入:rm -Rf /Applications/Android\ Studio.apprm -Rf ~/Library/Preferences/AndroidStudio*rm ~/Library/Preferences/com.google.android.studio.plistrm -Rf ~/Library/...原创 2018-03-25 21:41:09 · 22004 阅读 · 0 评论 -
Android中Activity生命周期
正常的情况下Activity的生命周期onCreate():从字面意思我们也能看出这是在Activity 正在被创建的时候执行的一个方法,也是Activity生命周期的第一个方法。我们一般都在这个方法中执行初始化工作。onRestart():表示Activity正在被从新启动,一般情况下一个Activity从不可见变成可见时,onRestart()方法会被调用。onStart():表...原创 2018-03-31 16:41:54 · 6711 阅读 · 0 评论 -
Android中Activity启动模式分析
前言 当我们启动多次启动一个同一个Activity的时候,系统会创建多个实例并把他们全部放入任务栈中,当我们返回的时候,会发现这些Activity会一一回退。我们都知道栈是一种先进后出的数据结构,任务栈本质就是一个栈类型的数据结构。这就是为什么我们每按一下返回键都会有一个Activity出栈,直到栈为空为止。当栈中没有任何Activity的时候,系统就会回收这个任务栈。如果多次启动一个...原创 2018-03-31 21:55:21 · 6697 阅读 · 0 评论 -
Android中实现跨进程通信(IPC)的几种方式(一)
前言 首先我们需要了解什么是进程,进程和线程是两种完全不同的概念,从操作系统的角度来看,线程是CPU调度的最小单元,而进程一般指的是一个执行单元。在我们的Android系统中,一般一个进程指的是一个应用程序,但是不能说一个应用程序中只能有一个进程,一个应用程序中可以有多个进程,市面上主流的App,都是多进程的。一个进程中可以包含多个线程,因此进程和线程是包含与被包含的关系。在最简单的情况...原创 2018-04-01 21:28:57 · 7508 阅读 · 0 评论 -
Android开发者必备的网站
官方网站1谷歌Android开发者页面 这里是主站点,在这您可以找到一切资源帮助您开始Android开发。此站包含了很多关于学习基础知识的资源,完整的API引用,以及你开始开发所需的各种工具。此站共分为五个部分: 1. 作为初学者,你应该从工具开始,这部分讲解了如何安装AndroidSDK。 2. 教程为你提供了关于Android的基本介绍,教给你如何写出你的第...原创 2018-04-04 23:08:49 · 9073 阅读 · 0 评论 -
Android中对象的序列化
为什么需要对对象进行序列化永久的保存对象数据(将对象数据保存到磁盘中)通过序列化操作将对象数据在网络上进行传输(由于网络传输是以字节流的方式对数据进行传输的.因此序列化的目的是将对象数据转换成字节流的形式)需要通过Intent Binder传递对象的时候需要对象实现序列化Android中实现序列化的两种方式1. 实现Serializable接口 Serial...原创 2018-05-20 23:55:53 · 6834 阅读 · 0 评论 -
Android中实现跨进程通信(IPC)的几种方式(二)
Android中实现跨进程通信(IPC)的几种方式(二) 在上一篇文章中介绍了什么是多进程,为什么需要多进程,多进程的优缺点等。这篇我们将会使用AIDL来实现跨进程通信。1.什么是AIDL AIDL全称是Android接口定义语言 您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接口。 在 Android 上,一个进程通常无法访问另一个进程...原创 2018-05-26 18:40:25 · 7758 阅读 · 0 评论 -
解决retrofit2.adapter.rxjava.HttpException: HTTP 400
解决retrofit2.adapter.rxjava.HttpException: HTTP 400 错误前言 最近项目中遇到一件怪事,在get请求中发现没有数据,在debug时候发现居然爆了一个retrofit2.adapter.rxjava.HttpException: HTTP 400错误。经过查阅资料发现400 请求出错 由于语法格式有误,服务器无法理解此请求。不作修...原创 2018-05-26 22:47:50 · 17900 阅读 · 2 评论 -
Android中实现跨进程通信(IPC)的方式(三)之观察者模式
前言在Android中实现跨进程通信(IPC)的几种方式(一)中介绍了什么是多进程,为什么需要多进程,多进程的优缺点等。这篇我们将会使用AIDL来实现跨进程通信 在Android中实现跨进程通信(IPC)的几种方式(二)中讲解了怎么用AIDL实现跨进程通信。如果还不了解什么AIDL,那么可以看一下这篇文章。背景现在有一个需求是在另外一个进程中进行数据处理,我们需要获取它的处理结果...原创 2018-06-03 20:28:23 · 7412 阅读 · 0 评论 -
深入理解Android中的消息机制,理解Hander MessageQueue Looper三者之间的关系
前言 Handler在Android开发中经常使用,比我我们在子线程中完成从服务端获取数据,因为Android系统是不允许我们在非主线程中去访问UI,这个时候我们需要用Handler把更新UI的操作切换到主线程中去操作。这里有一个误区就是很多开发者以为Handler只能用于访问UI,这是错误的,因为更新UI这是Handler的一种特殊的使用场景。其实Handler是用于进行Message R...原创 2018-07-22 23:46:04 · 835 阅读 · 0 评论 -
ThreadLocal源码分析
前言在上一篇深入理解Android中的消息机制,理解Hander MessageQueue Looper三者之间的关系中提到了ThreadLocal。今天看到一道美团的面试题如何保证一个线程中只有一个Looper。我第一个想到的就是ThreadLocal。因为ThreadLocal可以非常简单的实现保证一个线程中只有一个Looper对象。ThreadLocal工作原理ThreadL...原创 2018-08-26 23:14:11 · 260 阅读 · 0 评论 -
Rxjava 2学习笔记(一)
Rxjava 2学习笔记(一) Rxjava 在这些年在android开发中非常的火爆,它和Retrofit 的结合堪称完美,他们可以把我们从以前我们进行网络请求中各种线程切换,各种接口回掉中解放出来了。可以让我们的逻辑变的非常清晰,便于代码维护。我们公司的项目目前使用的Rxjava 版本还是1.0版本的,准备打算升级到使用Rx2.0。所以打算学习一下Rxjava 2Observable.c...原创 2018-10-22 00:01:22 · 282 阅读 · 0 评论 -
Android 自定义 DialogFragment 宽度问题
自定义DialogFragment解决自定义DialogFragment宽度和高度问题自定义DialogFragment从底部弹出Android 自定义 DialogFragment 宽度问题原创 2017-12-07 23:15:48 · 7097 阅读 · 0 评论 -
Retrofit总结
Retrofit个人总结记录一下开发中使用retrofit的时候的一些总结笔记。@Url适合用于比如BaseUrl不一样的情况。@Url后面就是url全路径@GETObservable<AppPathBean> getThreeAppUrl(@Url String path);@Path适合于路径中某个字段不一样。 @GET("users/{user}/repos") Call<List<R原创 2017-12-02 21:52:01 · 6718 阅读 · 0 评论 -
android中 TypedValue.applyDimension 的作用
这个方法的作用是将我们在布局中用到的dp.sp等单位转换成标准的尺寸的一个函数。mMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,3, getResources().getDisplayMetrics());TypedValue.COMPLEX_UNIT_DIP是dp 单位,3是我们需要转换的原创 2015-11-17 16:07:15 · 3923 阅读 · 0 评论 -
android中对一个集合中的数据进行乱序排列的一些方法
在android 中我们有时候需要让一个进行中原本有序排列的数据进行乱序排列,最近的自己做的项目中遇到了这种需要,所以把方法记录下来。第一种方法:我们可以利用Collections.sort()方法: ArrayList mList = new ArrayList();//////////对mList进行初始化/////////////////////进行乱序操作原创 2015-11-17 16:13:18 · 946 阅读 · 0 评论 -
TabLayout与ViewPager组合实现tab导航
因为TabLayout是在android.support.design包下面,所以需要引入android.support.design这个包ViewPager是在android.support.v4这个包下面,所以需要引入这个包。我在android studio 下面撸码。在写Viewpger的adapter的时候发现在android.app.Activity;这个包下面的Activtiy无法获得原创 2016-02-05 20:44:19 · 3790 阅读 · 0 评论 -
android 中的Cursor
关于 Cursor在你理解和使用 Android Cursor 的时候你必须先知道关于 Cursor 的几件事情:Cursor 是每行的集合。使用 moveToFirst() 定位第一行。你必须知道每一列的名称。你必须知道每一列的数据类型。Cursor 是一个随机的数据源。所有的数据都是通过下标取得。关于 Cursor 的重要方法:close()关闭游标,释放资源c转载 2016-02-10 21:20:39 · 317 阅读 · 0 评论 -
android 中的Uri详解
在android 开发中我们经常看到Uri这个单词,第一眼看很容易看成我们经常看到的URL但是他们不同的。首先说一下他们的区别 URI是uniform resource identifier 统一资源标识符,而URL是uniform resource locator 统一资源定位器。所以URL是一种具体的URI它可以用来标识一个资源,也可以locate 他,而URN是uniform resourc原创 2016-02-10 22:11:26 · 5505 阅读 · 0 评论 -
LoaderManager使用详解(一)---没有Loader之前的世界
了解LoaderManager这篇文章将介绍LoaderManager类,这是该系列的第二篇文章。一:Loaders之前世界二:了解LoaderManager三:实现Loaders四:实例:AppListLoader注意:要了解这一LoaderManager这部分知识,要求对Loaders如何工作有基本了解。Loaders的实转载 2016-02-10 23:06:41 · 1156 阅读 · 0 评论 -
LoaderManager使用详解(二)---了解LoaderManager
这篇文章将介绍LoaderManager类,这是该系列的第二篇文章。一:Loaders之前世界二:了解LoaderManager三:实现Loaders四:实例:AppListLoader注意:要了解这一LoaderManager这部分知识,要求对Loaders如何工作有基本了解。Loaders的实现将在下一篇文章中涵盖。现在你只需要将Loader转载 2016-02-11 14:11:38 · 325 阅读 · 0 评论 -
Android中View的绘制
View可以看成一个树形结构,父控件是父节点,子控件是子节点。View的绘制过程就是遍历这棵树。View的绘制有三步:measure:测量View的Width和Height,layout:布局View(left,right,top,bottom),指定View和手机屏幕的上下左右的距离。draw:绘图以上的步骤必须按照顺序来。(顺便说一下,以上三个步骤发生在View的构造方原创 2016-03-03 09:40:12 · 252 阅读 · 0 评论 -
解决TextView中排版问题
1、半角字符与全角字符混乱所致:这种情况一般就是汉字与数字、英文字母混用 解决方法一:将textview中的字符全角化。即将所有的数字、字母及标点全部转为全角字符,使它们与汉字同占两个字节,这样就可以避免由于占位导致的排版混乱问题了。 半角转为全角的代码如下,只需调用即可。Java代码 public static String To转载 2016-03-31 11:11:22 · 1991 阅读 · 0 评论 -
android 中怎么让ListView可以无限循环加载 Adapter中的数据
有时候在开发的时候有这样的需求,那就是我们需要在ListView中无限重复加载一组数据,让我们的listView可以无限下拉。要想做到这点,我们必须自定义Adapter。重点在于们的getCount()方法因为我们的listView在加载数据的时候先要读取的,因为getCount()返回值的大小决定了ListViewy要加载的行数,所以这里我们需要返回一个很大的值,所以我们直接让它返回Inte原创 2016-02-25 10:34:16 · 3033 阅读 · 1 评论 -
使用ActionBar报空指针异常
前言在使用 ActionBar的时候,有时候会爆出空指针异常,这是因为应用没有获取到 ActionBar 导致的,而导致应用没有获取到 ActionBar 的原因比较多,所以我们下面就来总结一下 ActionBar 获取不到的错误原因。解决办法检查你的应用是否设置了没有 ActionBar 的主题Theme,或者直接设置了 NoActionBar或NoTitleBar 属性转载 2016-02-27 16:37:35 · 1485 阅读 · 0 评论 -
Android中Looper讲解
在Android下面也有多线程的概念,在C/C++中,子线程可以是一个函数, 一般都是一个带有循环的函数,来处理某些数据,优先线程只是一个复杂的运算过程,所以可能不需要while循环,运算完成,函数结束,线程就销毁。对于那 些需要控制的线程,一般我们都是和互斥锁相互关联,从而来控制线程的进度,一般我们创建子线程,一种线程是很常见的,那就是带有消息循环的线程。消息循环是一个很有用的线程方式,转载 2016-04-05 21:03:24 · 379 阅读 · 0 评论 -
利用ActivityLifecycleCallbacks优雅的退出应用
Android中如何优雅的退出应用前言在android开发中我们都会遇到一个需求,那就是退出应用,那么我们都会退出所有的activity。 我们一般常用的方式有下面几种:第一种方式我们写一个BaseActivity,在activity的创建的时候添加当前activity到集合中,在activity销毁的时候把当前activity移除出activity集合。退出应用时直接遍历activity集原创 2017-09-02 22:19:14 · 4798 阅读 · 0 评论 -
用RecyclerView实现仿支付宝应用管理
前言由于公司项目有一个应用管理的功能和支付宝的应用管理功能非常像,所有的信息都是从服务端拉去的数据动态生成,有不同的应用分类,有标题等等信息。对于实现这种效果可以用ListView 或者RecyclerView通过加载多种布局来实现。原创 2017-11-12 18:38:04 · 4001 阅读 · 0 评论 -
用Rxjava来实现RxBus
前言 Android开发中,我们使用MVP模式开发的时候,涉及到Model层和Presenter层的通信的时候,我们一般都需要使用Handler 来实现,因为Model层我们一般处理具体的业务逻辑,不可避免的需要进行进行网络请求,由于Android中是不允许在UI线程中进行网络请求的,而更新UI必须是在UI线程中进行,那么就涉及到了线程的切换,在Rxjava 出来之前,我们都是通过Handle...原创 2018-12-31 21:47:29 · 1118 阅读 · 0 评论