![](https://img-blog.csdnimg.cn/20190306231845865.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android基础
Android基础
mLuoya
这个作者很懒,什么都没留下…
展开
-
Android Intent全解析
IntentIntent 可以携带的数据类型八种基本数据类型boolean、byte、char、short、int、float、double、long 和String 以及这9 种数据类型的数组形式实现了Serializable 接口的对象实现了Android 的Parcelable 接口的对象以及其数组对象Activity使用Intent跳转显式Intent intent = ne...原创 2019-02-25 23:29:31 · 4342 阅读 · 0 评论 -
Android组件系列——Content Provider
Content Provider跨进程共享数据的标准方式与SharedPreferences存储中的全局可读可写操作模式不同的是,Content Provider可选择只对某一部分数据进行共享,从而保证数据的安全性ContentResolver不同于SQLiteDatabase,ContentResolver中的增删改查方法均不接收表名参数,而是使用一个Uri的参数代替,这个参数被称作内容...原创 2019-02-25 23:27:45 · 3965 阅读 · 0 评论 -
Android组件系列——Service
Service一种长生命周期的组件,不实现任何用户界面,一个没有界面的Activity长期在后台运行,执行不关乎界面的一些操作比如:网易新闻服务,每隔1 分钟去服务查看是否有最新新闻和Thread 有点相似,但是使用Thread 不安全,不严谨运行在主线程中,因此不能用它来做耗时的操作与Thread的区别Service运行在主线程,不能进行耗时操作Thread开启的子线程可以做好事操...原创 2019-02-25 23:25:52 · 4143 阅读 · 0 评论 -
Android组件系列——BroadCastReceiver
BroadCast进程间传输信息的机制,通过Intent携带书数据进行通信无序、有序广播内部实现机制1、自定义类继承BroadcastReceiver,并重写onReceiver()2、通过Binder机制向AMS(Activity Manager Service)进行注册3、通过Binder机制向AMS发送广播4、AMS查找符合条件(IntentFilter/Permission等)...原创 2019-02-25 23:23:20 · 4090 阅读 · 0 评论 -
Android组件系列——Activity
Activity概念android四大组件之一。Activity是独立平等的,用来处理用户操作。Android中的activity全部归属于task管理。task 是多个 activity 的集合,这些 activity 按照启动顺序排队存入一个栈(即“back stack”)。android默认会为每个App维持一个task来存放该app的所有activity,task的默认name为该ap...原创 2019-02-25 23:22:02 · 4303 阅读 · 0 评论 -
Android控件系列——RecyclerView和ListView对比
RecyclerView和ListView对比ViewHolder均是用来保存视图引用的类ListViewViewHolder需自己定义,可选择是否使用。如不使用,getView时会多次调用findViewById(),带来性能问题RecycleView必须自定义类使用RecycleView.ViewHolder类布局效果ListView只能垂直方向滑动,系统API无水平方向滑动...原创 2019-02-25 23:14:20 · 4472 阅读 · 0 评论 -
Android控件系列——Recyclerview
RecyclerView基础使用默认布局管理器:LinearLayoutManager、GridLayoutManager、StaggeredGridLayoutManager均支持横向和纵向排列以及反向滑动。如横向滑动:mLayoutManager.setOrientation(GridLayoutManager.HORIZONTAL);//设置控件<android.suppo...原创 2019-02-25 23:13:15 · 4087 阅读 · 0 评论 -
Android控件系列——ListView
ListView/GridListView基本使用ListView lv = findViewById(R.id.lv);lv.setAdapter(new MyAdapter(this,strings));public class MyAdapter extends BaseAdapter { //自定义类继承BaseAdpter private Context context; p...原创 2019-02-25 23:11:36 · 3981 阅读 · 0 评论 -
Android控件系列——ProgressBar
ProgressBar提供两种进度显示模式:精确模式,模糊模式,效果见当前文件夹下精确模式:可看到精确的进度(右)模糊模式:相当于动画,用户看到到进度信息(左)XML属性style属性值Widget.ProgressBar.Horizontal 横向进度条,模式由 indeterminate 属性决定?android:attr/progressBarStyleHorizonta...原创 2019-02-25 23:08:51 · 6449 阅读 · 0 评论 -
Android控件系列——TextView
TextView基本方法getDefaultMovementmethod() //获取默认的箭头按键移动方式getText() //获得TextView对象的文本length() //获得TextView中的文本长度getEditableText() //获取文本可编辑对象,可对TextView文本进行操作,如在光标之后插入字符 getC...原创 2019-02-25 23:05:40 · 4542 阅读 · 0 评论 -
Android控件系列——Popupwindowod
popupwindow简单使用popupWindow = new PopupWindow(View, width, height, focusable);//参数:PopupWindow要显示的视图,宽,高,是否可点击//宽高可设置成ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENTpopupWin...原创 2019-02-25 22:59:16 · 4253 阅读 · 0 评论 -
Android控件系列——Dialog
DialogDialog AlertDialog TimePickerDialog DatePickerDialog ProgressDialog AppCompatDialog AlertDialog Presentation CharacterPickerDialogAlertDialogAlertDialog.Builder builder = new Bui...原创 2019-02-25 22:57:05 · 4472 阅读 · 0 评论 -
Android控件系列——WebView
WebView简介实现在app内展示网页并交互,同时也可在其中放入其他view(VebView标签可嵌套其他view标签),WebView组件继承自AbsoluteLayout。从Android4.4开始内核由WebKit变更为Chromium,提升性能和对HTML5,CSS3,JavaScript的支持WebView的行为定制:WebSettings,JavaScriptInterface...原创 2019-02-25 22:54:29 · 6753 阅读 · 0 评论 -
Android热更新全认识
热更新应用场景刚发布的应用出现了比较严重的bug有一些小的功能想即时的推送给用户去使用热更新流程1、线上检测到严重的crash2、拉出bugfix分支并在分支上修复问题3、jenkins构建和补丁生成4、app通过推送或者主动拉取补丁文件5、将bugfix代码合到master分支上热更新原理 BaseDexClassLoader PathClassLoader Dex...原创 2019-02-24 13:44:51 · 6205 阅读 · 0 评论 -
Android架构设计模式
架构设计模式MVCModel 模型层,负责处理数据加载或者存储View 视图层,负责界面数据展示,与用户进行交互Controller 控制器层,负责逻辑业务处理优点耦合性低重用性高生命周期成本低部署快可维护性高有利软件工程化管理缺点无明确的定义不适合小,中型等应用程序增加系统结构和实现的复杂性视图与控制器间连接紧密视图对模型数据的访问效率低一般高级的界面工具...原创 2019-02-24 13:43:05 · 5378 阅读 · 1 评论 -
Android插件化、组件化总结
架构设计之插件化、组件化组件化方案1、module library 切换2、组件间跳转uri跳转3、组件间通讯 binder机制主工程(壳工程mudele) 不分配任何具体业务逻辑。用于使用组合业务组件、初始化配置和发布应用配置等组件(module/library) 实现具体业务逻辑,尽可能保证业务独立性。具体根据自己的项目需要来划分公共库(library) 公共使用的...原创 2019-02-24 13:41:02 · 6154 阅读 · 0 评论 -
Andrid概念——Window全认识(持续更新)
WindowWindowManagerService 位于 Framework 层的窗口管理服务,管理系统中的所有窗口窗口(Window):一块显示区域,在 Android 中就是绘制的画布。VIew为Window的实体,Window是一个抽象概念可独立完成对Window的操作, 作为系统级服务运行在一个单独的进程。因此,WindowManager 和 WindowManagerServ...原创 2019-02-24 13:38:17 · 4940 阅读 · 0 评论 -
Android系统源码目录
Android系统源码目录源码下载官网:http://androidxref.com/镜像:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/百度网盘:http://pan.baidu.com/s/1ngsZs整体架构 编译后的源码目录会多增加一个out文件夹,用来存储编译产生的文件Android源码根目录描述abi...原创 2019-02-24 13:36:21 · 6123 阅读 · 2 评论 -
Binder机制详解
Binder机制 Android系统中进程间通讯(IPC)的一种方式,Android中ContentProvider、Intent、aidl都是基于Binder内存管理 Binder最大只能传1M的数据,因为Binder驱动只预留了一段1M大小的虚拟地址mmap中定义BINDER_VM_SIZE为1M,Binder数据需要跨进程传递,需要在内核上开辟空间,所以允许在Binder上传递的...原创 2019-02-24 13:30:33 · 8587 阅读 · 0 评论 -
Android插件化
Android插件化 减少安装包大小,实现app功能模块化动态扩展发展历程需解决三个问题插件中代码的加载和与主工程的互相调用插件中资源的加载和与主工程的互相访问四大组件生命周期的管理框架发展的三代第一代dynamic-load-apk:使用ProxyActivity静态代理技术由ProxyActivity去控制插件中PluginActivity的生命周期缺点:插件中的acti...原创 2019-02-24 13:24:22 · 4920 阅读 · 0 评论 -
Android进程概念与应用
进程应用场景 类似音乐类、跑步健身类、手机管家类等长时间需要在后台运行的应用Android中的进程Android中的进程前台 > 可见 > 服务 > 后台 > 空Foreground process 前台进程(满足任一个条件)1、拥有一个正在和用户交互的Activity(也就是说Activity 的onResume()方法被执行了)2、拥有一...原创 2019-02-22 07:54:05 · 5245 阅读 · 0 评论 -
Android类加载器概念与应用
类加载器负责将.class文件加载到内存中,并为之生成对应的Class对象当程序使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来对其初始化加载:指将class文件读入内存,并为之创建一个Class对象。任何类被使用时系统都会建立一个Class对象连接:验证 是否有正确的内部结构,并和其他类协调一致准备 负责为类的静态成员分配内存,并设置默认初始化值...原创 2019-02-22 07:51:57 · 5522 阅读 · 0 评论 -
ThreadLocal的使用与解析
ThreadLocal 用来解决对某一变量访问的冲突问题。ThreadLocal维护变量时,为每个使用该变量的线程提供一个独立的变量副本。因此多线程访问变量时,不会相互影响,因此不存在多线程安全问题,也不影响程序的执行能力 由于在每个线程中都创建了副本,所以需要考虑它对资源的消耗。 线程的局部变量, 是每一个线程所单独持有的**,其他线程不能对其进行访问, **通常是类中的 priva...原创 2019-02-21 08:54:58 · 5172 阅读 · 0 评论 -
SurfaceView的基础使用
SurfaceView继承自View,拥有独立的绘图表面,即不与其宿主窗口共享一个绘图表面,通过Canvas画布绘制可在另一线程中更新界面,且不阻碍界面交互,不会占用主线程资源与View区别SurfaceView1、子线程中可以重新绘制画面,且绘图效率更高,适合动画等复杂绘制页面2、每个SurfaceView拥有独立的surface,通过在顶级surface上打洞来显示自己。这些sur...原创 2019-02-21 08:54:37 · 5283 阅读 · 0 评论 -
LayoutInflater使用与解析
LayoutInflater与findViewById()区别LayoutInflater:用来找res/layout/下的xml布局文件,并且实例化 对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入findViewById():找xml布局文件下的具体widget控件(如Button、TextView等) 对于一个已经载入的...原创 2019-02-21 08:52:57 · 6746 阅读 · 0 评论 -
getSystemService使用汇总
getSystemService使用WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); WifiManager wifiManager = (WifiManager)getSystemService("wifi");部分ManagerManager常量String...原创 2019-02-21 08:51:19 · 7458 阅读 · 0 评论 -
Android内存解析
内存冷启动冷启动:在启动应用前,系统没有该应用的任何进程信息热启动:用户使用返回键退出应用,然后马上有重新启动应用流程冷启动时间:从应用启动(创建进程),到完成视图的第一次绘制(即Activiy内容对用户可见)过程:Zygote进程中fork创建出一个新的进程,然后创建和初始化Application类,创建MainActivity类,inflate布局,当onCreate/onStar...原创 2019-02-21 08:38:42 · 5135 阅读 · 0 评论 -
Android事务解析
事务 并发控制的单位,时用户定义的一个操作序列。这些操作序列要么全部执行,要么全部不执行,是个不可分割的工作单位。如果事务操作成功,则该事务进行的所有数据均会提交,更改成为数据库中的永久组成部分;如果事务操作失败,则所有操作均取消,所有数据的更改均清除特性 原子性:事务是数据库的逻辑工作单元一致性:事务执行结果必须是使数据库从一个一致性状态变到另一个一致性状态隔离性:一个事务的执行...原创 2019-02-21 08:37:27 · 5603 阅读 · 0 评论 -
Android常用数据存储方式汇总
数据存储文件权限文件权限标识符:-rwxrw-r–共10位,分为4段。注:r:可读,w:可写,x:可执行。第一段(第1位):目录或文件,-表示文件,d表示目录第二段(第2-4位,共3个字符串):文件所属用户对它的权限第三段(第5-7位,共3个字符串):文件所属用户组用户对它的权限第四段(第8-10位,共3个字符串):其他用户对它的权限8进制表示文件权限规则:r=4,w=2,x=1。...原创 2019-02-21 08:33:43 · 5344 阅读 · 0 评论 -
Android异常总结
异常概述Java程序在运行过程中出现的错误分类Error:服务器宏机,数据库崩溃等Exception编译时异常:Java程序必须显示处理,否则程序会发生错误,无法通过编译,如:IOException,SQLException等当函数中存在抛出检查型异常的操作时该函数的函数声明中必须包含throws语句。调用改函数的函数也必须对该异常进行处理,如不进行处理则必须在调用函数上声明thro...原创 2019-02-21 08:32:37 · 5789 阅读 · 0 评论 -
Android注解解析与使用
注解 Annotation:Java提供的一种元程序中的元素关联任何信息或者任何元数据(metadata)的途径和方法基本规则:Annotation(注解)不能影响程序代码的执行,无论增加,删除注解,代码都始终如一的执行元数据(metadata) 1、以标签的形式存在于Java代码中2、描述的信息是类型安全的3、需要编译器之外的工具额外的处理用来生成其他的程序部件4、可以存在于J...原创 2019-02-21 08:31:20 · 6202 阅读 · 0 评论 -
Android手势指示器使用与解析
GestureDetector对外提供了两个接口(OnGestureListener,OnDoubleTapListener)和一个内部类(SimpleOnGestureListener) 应用场景:重写的onTouchEvent()处理事件能力过于简单,因此GestureDetector应用于更复杂的touch事件的处理构造函数new GestureDetector(GestureDet...原创 2019-02-20 22:36:34 · 5416 阅读 · 0 评论 -
Bundle的使用与解析
Bundle应用场景举例Activity:onCreat()、onSaveInstanceState()Fragment: setArguments()Message:setData()源码//位于android.os包中,final类public final class Bundle extends BaseBundle implements Cloneable, Parcelab...原创 2019-02-20 22:24:08 · 18209 阅读 · 0 评论 -
AsyncTask
AsyncTask应用场景:需获取子线程耗时任务的回调结果。需在Thread和Handler中编写代码逻辑,AsyncTask类将两者封装统一,相当于多线程框架基础使用1、以下重写的方法除doInBackground(),均在主线程中执行2、AsyncTask的实例必须在主线程中创建,execute()必须在主线程中调用3、一个AsyncTack的实例,只能执行一次execute方法,...原创 2019-02-20 22:21:44 · 5171 阅读 · 0 评论 -
Application
Application 和Activity,Service一样,是Android框架的一个系统组件。生命周期等于这个程序的生命周期,全局单例生命周期onCreate() 创建,可用于获取ApplicationContext供单例使用onTerminate() 在模拟环境下可执行,在真机下永远不会执行。且终止对象时不保证一定被调用onLowMemory() 内存较低的时候执行...原创 2019-02-20 22:16:45 · 5206 阅读 · 0 评论 -
Android性能优化总结
Android性能优化目的:更快,更稳定,更省更快:运行流畅,不卡顿,快速响应用户操作更稳定:程序运行过程中不出现无响应,崩溃等问题更省:节约资源,包括内存,电量,流量,安装包等流畅性启动速度 原因:初次开启应用时,需要加载多种资源或功能方案:异步加载(多线程),分步加载,延期加载页面显示速度 原因:页面绘制内容过多,过度绘制;使用复杂的动画方案布局优化:合理选择布局类...原创 2019-02-20 22:14:34 · 5241 阅读 · 0 评论 -
AndroidManifest.xml详解
AndroidManifest.xml Android应用的入口文件,它描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置结构图<?xml version="1.0"encoding="utf-8"?><manifest> <uses-sdk/> &l...原创 2019-02-20 22:12:46 · 9302 阅读 · 0 评论 -
Android五大布局属性解析
五大布局通用属性paddingBottom 内容与本控件底部的距离paddingLeft 左paddingRight 右paddingTop 顶padding 外LinearLayout(线性布局)orientation 方向gravity 本控件中内容居中layout_gravity 本控件在父控件中居中layout_weigh...原创 2019-02-19 08:47:56 · 5569 阅读 · 0 评论 -
Android四种引用
四种类型强引用(Strong Reference)经常使用,内存不足,抛出OOM异常使程序异常终止。不会回收强引用对象来解决内存不足问题软引用(Soft Reference)当无强引用指向时,会在内存中停留一段时间。垃圾回收器根据JVM内存使用情况及SoftReference.get()调用情况决定是否对其回收弱引用(Weak Reference)只要垃圾回收器对其回收,无论内存使用情...原创 2019-02-19 08:36:57 · 5581 阅读 · 0 评论 -
Android USB使用
USB使用技巧WIFI连接Android设备应用场景无USB数据线需连接Android设备,且能使用USB连接时的所有命令连接步骤1 PC与Andorid设备处同一Wi-Fi环境下2 获取Android设备IP地址方法一:设置 → 关于手机 → 状态信息 → IP地址方法二:设置 → WLAN → 当前连接上的Wi-Fi → IP地址(部分机型需按Menu键并选择...原创 2019-02-18 23:18:48 · 5976 阅读 · 0 评论