Android学习笔记
分享Android学习过程中的知识点
浩比浩比
这个作者很懒,什么都没留下…
展开
-
Android学习笔记:Android基础知识点(不断更新中)
1、Android系统的四大组件分别是:活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)、内容提供器(Content Provider)。2、定义一个应用程序名的字符串,有以下两种方式来引用它:原创 2019-10-28 22:09:45 · 26843 阅读 · 11 评论 -
Android学习笔记:Android10.0.+版本下ContentProvider的工作过程(流程分析文档)
一、 源代码版本源代码版本:Source for Android 30 (Android10.0+®)内容提供器的用法一般有两种,一种是使用现有的内容提供器来读取和操作相应程序中的数据,另一种是创建自己的内容提供器给我们程序提供外部数据访问。首先,我们编写一个ContentProviderDemo,该工程用来读取系统的联系人信息,该工程下有一个Activity即MainActivity,还有一个布局文件activity_main.xml。二、 ContentProvider的启动过程当Conte原创 2020-10-24 10:54:16 · 637 阅读 · 0 评论 -
Android学习笔记:Android10.0.+版本下BroadcastReceiver的工作过程(流程分析文档)
BroadcastReceiver的工作过程,主要包含两方面内容,一是广播的注册过程,二是广播的发送和接收过程。而广播的注册分为静态注册和动态注册,静态注册是通过AndroidManifest.xml配置来完成的,具体来说就是有PMS(PackageManagerService)来完成整个注册过程。我们采用动态注册的方式来分析广播。首先,创建BroadcastReceiverDemo工程,该工程包含两个类文件,分别是MainActivity和MyReceiver,以及布局文件activity_main.原创 2020-09-22 22:44:17 · 925 阅读 · 0 评论 -
Android学习笔记:Android10.0.+版本下Service的工作过程(流程分析文档)
一、源代码版本源代码版本:Source for Android 30 (Android10.0+(R))Service有两种工作状态,一种是启动状态,主要用于执行后台计算;另一种是绑定状态,主要用于和其他人组件和Service交互。需要注意的是,Service的这两种状态是可以共存的,即Service即可以处于启动状态又可以处于绑定状态。二、Service的启动状态首先,我们编写一个ServiceDemo,该工程下有一个Activity即MainActivity,和一个Service即M原创 2020-09-22 22:44:25 · 634 阅读 · 0 评论 -
Android学习笔记:Android10.0.+版本下Activity的工作过程(流程分析文档)
一、源代码版本源代码版本:Source for Android 30 (Android10.0+(R))二、流程分析Activity的启动由Intent触发,Intent可以分为显式Intent和隐式Intent。首先,我们编写一个ActivityDemo,该工程下有两个Activity,分别为MainActivity和SecondActivity,还有两个布局文件,分别为activity_main.xml和activity_second.xml。从入口方法startActivity()原创 2020-09-18 23:10:05 · 539 阅读 · 0 评论 -
Linux基础知识
一、文件结构Linux 文件系统是一个目录树的结构,文件系统结构从一个根目录开始,根目录下可以有任意多个文件和子目录,子目录中又可以有任意多个文件和子目录。bin 存放二进制可执行文件(ls,cat,mkdir等)boot 存放用于系统引导时使用的各种文件dev 用于存放设备文件etc 存放系统配置文件home 存放所有用户文件的根目录lib 存放跟文件系统中的程序运行所需要的共享库及内核模块mnt 系统管理员安装临时文件系统的安装点opt 额外安装的可原创 2020-09-03 19:12:48 · 321 阅读 · 0 评论 -
Android学习笔记:Material Design
Material Design于2014年的Google I/O 大会上推出,是由谷歌的设计工程师们基于传统优秀的设计原则,结合丰富的创意和科学技术所发明的一套全新的界面设计语言。在2015年的Google I/O 大会上推出了一个Design Support库,这个库将Material Design中最具代表性的一些控件和效果进行了封装,使得开发者在即使不了解Material Design的情况...原创 2019-10-28 22:09:13 · 552 阅读 · 0 评论 -
Android学习笔记:冷启动与热启动
一、区别App冷启动当应用启动时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用, 这个启动方式就叫做冷启动(后台不存在该应用进程)。冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。App热启动当应用已经被打开, 但是被按下返回键、Ho...原创 2019-10-25 15:33:48 · 788 阅读 · 0 评论 -
Android学习笔记:ANR的定位和修正
ANR(Application Not Responding)即应用无响应。可以通过查看/data/anr/traces.txt查看ANR信息。一、ANR的类型ANR一般有三种类型KeyDispatchTimeout(5 seconds) –主要类型按键或触摸事件在特定时间内无响应BroadcastTimeout(10 seconds)BroadcastReceiver在特定时间内...原创 2019-10-24 19:36:40 · 582 阅读 · 0 评论 -
Android学习笔记:通知(Notification)
通知(Notification)可以让我们在获得消息的时候,在状态栏、锁屏界面来显示相应的信息。当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。一、通知的基本用法1、在活动中创建2、在广播接收器里创建3、在服务里创建二、创建通知的详细步骤(1)首先需要一个NotificationManager来对通知进行管理,可以调用Context...原创 2019-10-19 22:10:42 · 648 阅读 · 0 评论 -
Android学习笔记:线程池(ThreadPool)
一、线程池的优点1、重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销。2、能有效控制线程池的最大并发数,避免大量的线程之间因互相抢占系统资源而导致的阻塞现象。3、能够对线程进行简单的管理,并提供定时执行以及指定间隔循环执行等功能。二、ThreadPoolExecutorThreadPoolExecutor是线程池的实现,它的构造方法提供了一系列参数来配置线程池,如下:p...原创 2019-08-28 20:57:18 · 603 阅读 · 0 评论 -
Android学习笔记:Volley
Volley的Github地址:https://github.com/google/volleyVolley的基本用法:下载Volley库且放在libs目录下并add到工程中。(官网使用说明<需科学上网>)在2013年Google I/O大会上推出了一个新的网络通信框架Volley。Volley既可以访问网络取得数据,也可以加载图片,并且在性能方面也进行了大幅度的调整,它的设计目标...原创 2019-02-25 17:47:55 · 551 阅读 · 2 评论 -
Android学习笔记:活动(Activity)
一、活动的生命周期1、活动状态运行状态当一个活动位于栈顶的时候,该活动就处于运行状态。(Android是使用任务栈来管理活动的,也称返回栈(Back Stack)。在默认情况下,每当我们启动一个新的活动,它会在返回栈中入栈,并处于栈顶位置。每当我们按下Back键或调用finish()方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动会位于栈顶。系统总是会显示处于栈顶的活动给...原创 2019-05-17 10:54:07 · 1490 阅读 · 0 评论 -
Android学习笔记:Android优化
一、如何处理网络图片产生的OOM异常?常见的OOM异常主要是由程序中图片过多过大引起的。1、调整图片大小每个Android手机屏幕尺寸有限,分配给图像的显示区域本身也就更小,图像大小可以适当调整。在程序中,调整图片的大小需要通过设置Options的inJustDecodeBounds属性true,将图片的width和height属性读取出来。我们可以利用这些属性对Bitmap进行压缩,...原创 2019-09-01 23:12:24 · 822 阅读 · 0 评论 -
Android学习笔记:更新UI的方法(UI线程和非UI线程)
一、UI线程以及Android的单线程模型原则当应用启动时,系统会创建一个主线程(Main Thread)。这个主线程负责向UI组件分发事件(包括绘制事件),在这个主线程里,应用和Android的UI组件发生交互。所以Main Thread也叫UI Thread也即UI线程。系统不会为每个组件单独创建线程,在同一个进程里的UI组件都会在UI线程里实例化,系统对每一个组件的调用都从UI线程分发出...原创 2019-02-24 13:18:16 · 1198 阅读 · 0 评论 -
Android学习笔记:布局
一、布局介绍Android中有3种最基本的布局,分别是:线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(框架布局|FrameLayout)。原创 2019-05-29 22:56:20 · 828 阅读 · 0 评论 -
Android学习笔记:Android-Async-Http
对于Android-Async-Http库来说,不推荐使用,原因有两点:1、作者已停止维护2、Android5.0后弃用HttpClient,Android-Async-Http是基于HttpClient库之上的网络请求处理库该篇文章仅供了解学习使用。Android-Async-Http的Github地址:https://github.com/loopj/android-async-htt...原创 2019-03-02 21:16:33 · 6790 阅读 · 0 评论 -
Android学习笔记:HttpClient和HttpURLConnection
在Android开发中网络请求是最常用的操作之一,Android SDK中对HTTP(超文本传输协议)也提供了很好的支持,这里包括两种接口:(1)标准Java接口(java.NET)——HttpURLConnection,可以实现简单的基于URL请求、响应功能;(2)Apache接口(org.apache.http)——HttpClient,使用起来更方便更强大;一、HttpClientH...原创 2019-03-04 15:54:31 · 1554 阅读 · 0 评论 -
Android学习笔记:Universal-Image-Loader
Universal-Image-Loader是目前Android主流的图片处理库框架之一,作者是白俄罗斯的Sergey Tarasevich。在Android图片处理中需要考虑的问题很多,例如OOM、图片缓存和网络图片加载、多线程问题及图片压缩处理等等复杂的问题。但是Universal-ImageLoader已经帮我们把这些问题处理好了,对外提供了相应的完善的请求API,我们只需要按照要求使用即...原创 2019-07-16 20:45:20 · 442 阅读 · 0 评论 -
Android学习笔记:IntentService
一般我们所使用的Service是运行在主线程当中的,所以在Service里面编写耗时的操作代码,会造成主线程卡顿会ANR。为了解决这样的问题,谷歌引入了IntentService。如果有一个任务,可以分成很多个子任务,需要按照顺序来完成,如果需要放到一个服务(Service)中完成,那么使用IntentService是最好的选择。一、IntentService的优点(1) 它创建一个独立的工...原创 2019-09-02 15:07:47 · 835 阅读 · 0 评论 -
Android学习笔记:框架模式
目前Android的框架模式主要有MVC、MVP和MVVM。一、MVC模式MVC(Model-View-Controller,模型-视图-控制器)采用业务逻辑、数据、界面显示分离的方法组织代码,在更新界面或用户交互时,不需要重新编写业务逻辑。模型层(Model):业务模型。视图层(View):界面描述。控制层(Controller):控制业务。缺点:View层和Model层相互耦...原创 2019-08-18 20:54:47 · 675 阅读 · 2 评论 -
Android学习笔记:ButterKnife插件
ButterKnife插件是一个专注于Android系统的View注入框架,可以减少大量的findViewById()以及setOnClickListener代码。一、官网GitHub:https://github.com/JakeWharton/butterknife二、获取ButterKnife(1)在整个工程(project)的gradle里的dependencies下添加以下依赖:...原创 2019-08-04 20:50:43 · 1514 阅读 · 0 评论 -
Android学习笔记:AsyncTask
一、AsyncTask简介AsyncTask是一个专门用来处理后台进程与UI线程的工具。AsyncTask背后的实现原理也是基于异步消息处理机制的。二、AsyncTask的基本用法由于AsyncTask是一个抽象类,所以我们想使用它必须创建一个AsyncTask有4个重要的回调方法:(1)onPreExecute(),onPreExecute运行在UI线程,主要目的是为后台线程的运行做准...原创 2019-03-21 10:35:25 · 1124 阅读 · 3 评论 -
Android学习笔记:Handler
一、Handler简介Handler是Android消息机制的上层接口,这使得在开发过程中只需要和Handler交互即可。Handler的使用过程很简单,通过它可以轻松的将一个任务转换到Handler所在的线程中去执行。Handler的作用是将一个任务切换到某个指定的的线程中去执行。Android提供这个功能的原因是Android规定访问UI只能在主线程中进行,如果在子线程中访问UI,那么程序就...原创 2019-02-28 22:20:33 · 935 阅读 · 0 评论 -
Android学习笔记:OkHttp
OKhttp的Github地址:https://github.com/square/okhttp在Android Studio中使用不需要下载jar包,直接添加依赖即可:compile 'com.squareup.okhttp3:okhttp:3.13.1'添加上述依赖会自动下载两个库,一个是OKHttp库,一个是Okio库,后者是前者的通讯基础。添加权限<uses-permiss...原创 2019-02-21 22:20:04 · 3929 阅读 · 10 评论 -
Android学习笔记:SharedPreferences
1、请描述SharedPreferences的实现原理SharedPreferences是使用键值对的方式来存储数据的。当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。SharedPreferences支持多种不同的数据类型存储,比如String、int、boolean值等。(应用范围:许多程序的偏好设置功能其实都使用到了SharedP...原创 2019-03-11 22:46:55 · 837 阅读 · 0 评论 -
Android学习手册:JSON解析工具比较
Android解析JSON数据的方法和XML解析类似,主要有两种: 基于事件驱动和基于文档驱动解析方式基于事件驱动主流方式:Gson解析和Jackson解析基于文档驱动主流方式:Android Studio自带org.json解析解析方式:基于文档驱动,类似于XML的DOM解析方法,先把全部文件读入到内存中,然后遍历所有数据,然后根据需要检索想要的数据。一、json-libjso...原创 2019-08-12 16:15:43 · 929 阅读 · 0 评论 -
Android学习笔记:WebView
项目地址:https://github.com/ambition-hb/WebViewDemo一、WebView的基础用法新建一个WebView项目,然后修改activity_main.xml布局文件中的代码,如下所示:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:a...原创 2019-09-07 22:44:00 · 8515 阅读 · 0 评论 -
Android学习笔记:RecyclerView
代码地址:(1)基本用法:https://github.com/ambition-hb/RecyclerViewDemo(2)横向滚动:https://github.com/ambition-hb/RecyclerViewDemo/tree/one(3)瀑布流布局:https://github.com/ambition-hb/RecyclerViewDemo/tree/two(4)点击事件...原创 2019-08-02 16:35:26 · 859 阅读 · 0 评论 -
Android学习笔记:ListView
代码地址:https://github.com/ambition-hb/ListViewDemoListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕内的数据则会滚动出屏幕。一、基本用法(1)由于数组中的数据无法直接传递给ListView,我们需要借助适配器(Adapter)来完成。(2)ArrayAdapter可以通过泛型来指定要适配的数据,然后在构造函数中把...原创 2019-07-16 12:59:10 · 13798 阅读 · 0 评论 -
Android学习笔记:碎片(Fragment)
一、概念(1)Fragment是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间。(2)一般建议使用support-v4库中的Fragment,因为它可以让碎片在所有Android系统版本中保持功能一致。(3)通过LayoutInflater的inflate()方法加载fragment布局。二、动态加载碎片动态加载碎片的步骤:①创建待添加的碎片实例;②获...原创 2019-08-16 10:23:07 · 974 阅读 · 0 评论 -
Android学习笔记:内容提供器(Content Provider)
一、概念内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证程序被访数据的安全性。不同于文件存储和SharedPreferences存储中的两种全局可读写操作模式,内容提供器可以选择只对哪一部分数据进行共享,从而保证我们程序中的隐私数据不会有泄露的风险。(1)如果想要实现跨程序共享...原创 2019-08-15 21:47:20 · 1025 阅读 · 0 评论 -
Android学习笔记:EventBus和otto
Android事件总线分发库EventBus和Otto的简介及对比一、什么是事件总线管理:将事件方到队列里,通过队列进行事件的管理和分发保证应用的各个部分之间高效的通讯及数据、事件分发模块之间的解耦 不用写网络请求接口回调了,直接通过EventBus传递数据。(通过接口回调传递数据、通过EventBus传递数据)二、EventBus简介Event Bus是一个发布/订阅的事件总线。Ev...原创 2019-03-26 11:24:49 · 850 阅读 · 2 评论 -
Android学习笔记:广播(Broadcast)
一、分类标准广播(无序广播)①是一种完全异步执行的广播,在广播发出后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此它们之间没有任何先后顺序。②无序广播不可以被拦截,若被拦截,则会报错。③无序广播的广播接收者之间不能相互传递数据。有序广播①是一种同步执行的广播,在广播发出后,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才...原创 2019-08-15 20:56:28 · 871 阅读 · 0 评论 -
Android学习笔记:服务(Service)
一、概念服务是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务(服务是一个运行在后台没有用户界面的组件,用于执行耗时操作)。服务的运行不依赖于任何用户界面,即使程序被切换到后台,或者用户打开了另外一个应用程序,服务仍然能够保持正常执行。服务并不是运行在一个独立的进程当中,而是依赖于创建服务时所在的应用程序进程。当某个应用程序被杀掉时,...原创 2019-08-15 20:40:16 · 917 阅读 · 0 评论