![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android 基础资料
史努比程序媛
这个作者很懒,什么都没留下…
展开
-
Activity、Window和View三者间的关系
一、简述如何将Activity展现在手机上Tips:Activity本身是没办法处理显示什么控件(view)的,是通过PhoneWindow进行显示的换句话说:activity就是在造PhoneWindow,显示的那些view都交给了PhoneWindow处理显示1、在Activity创建时调用attach方法:2、attach方法中会调用PolicyManager.makeN原创 2016-12-13 14:36:48 · 263 阅读 · 0 评论 -
如何自定义控件
自定义属性的声明和获取分析需要的自定义属性在res/values/attrs.xml定义声明在layout文件中进行使用在View的构造方法中进行获取测量onMeasure布局onLayout(ViewGroup)绘制onDrawonTouchEventonInterceptTouchEvent(ViewGroup)状态的恢复与保存原创 2017-02-09 12:13:42 · 280 阅读 · 0 评论 -
Context区别
Activity和Service以及Application的Context是不一样的,Activity继承自ContextThemeWraper.其他的继承自ContextWrapper每一个Activity和Service以及Application的Context都是一个新的ContextImpl对象getApplication()用来获取Application实例的,但是这个方法只有在原创 2017-02-09 12:14:44 · 416 阅读 · 0 评论 -
为什么在Service中创建子线程而不是Activity中
这是因为Activity很难对Thread进行控制,当Activity被销毁之后,就没有任何其它的办法可以再重新获取到之前创建的子线程的实例。而且在一个Activity中创建的子线程,另一个Activity无法对其进行操作。但是Service就不同了,所有的Activity都可以与Service进行关联,然后可以很方便地操作其中的方法,即使Activity被销毁了,之后只要重新与Service建立原创 2017-02-09 12:02:19 · 2785 阅读 · 1 评论 -
IntentService的使用场景与特点
IntentService是Service的子类,是一个异步的,会自动停止的服务,很好解决了传统的Service中处理完耗时操作忘记停止并销毁Service的问题优点:一方面不需要自己去new Thread另一方面不需要考虑在什么时候关闭该ServiceonStartCommand中回调了onStart,onStart中通过mServiceHandler发送消息到该hand原创 2017-02-09 12:16:22 · 1522 阅读 · 0 评论 -
Android怎么加速启动Activity
分两种情况,启动应用 和 普通Activity 启动应用 :Application 的构造方法,onCreate() 方法中不要进行耗时操作,数据预读取(例如 init 数据) 放在异步中操作 启动普通的Activity:A 启动B 时不要在 A 的 onPause() 中执行耗时操作。因为 B 的 onResume() 方法必须等待 A 的 onPause() 执行完成后才能运行原创 2017-02-09 12:20:00 · 2706 阅读 · 0 评论 -
动画有哪两类,各有什么特点?三种动画的区别
tween 补间动画。通过指定View的初末状态和变化时间、方式,对View的内容完成一系列的图形变换来实现动画效果。 Alpha Scale Translate Rotate。frame 帧动画 AnimationDrawable 控制 animation-list xml布局PropertyAnimation 属性动画原创 2017-02-09 12:21:42 · 4000 阅读 · 0 评论 -
广播(Broadcast Receiver)的两种动态注册和静态注册有什么区别。
静态注册:在AndroidManifest.xml文件中进行注册,当App退出后,Receiver仍然可以接收到广播并且进行相应的处理动态注册:在代码中动态注册,当App退出后,也就没办法再接受广播了原创 2017-02-09 12:24:20 · 1898 阅读 · 1 评论 -
Service的两种启动的区别
1.在Context中通过public boolean bindService(Intent service,ServiceConnection conn,int flags) 方法来进行Service与Context的关联并启动,并且Service的生命周期依附于Context(不求同时同分同秒生!但求同时同分同秒屎!!)。2.通过public ComponentName start原创 2017-02-09 12:25:53 · 359 阅读 · 0 评论 -
ANR简单见解
什么是ANR?ANR:Application Not Responding,即应用无响应。ANR定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不原创 2017-02-09 12:32:04 · 329 阅读 · 0 评论 -
Android图片中的三级缓存, 为什么要使用三级缓存
如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。在当前的状况下,对于非wifi用户来说,流量还是很贵的,一个很耗流量的应用,其用户数量级肯定要受到影响特别是,当我们想要重复浏览一些图片时,如果每一次浏览都需要通过网络获取,流量的浪费可想而知所以提出三级缓存策略,通过网络、本地、内存三级缓存原创 2017-02-09 12:35:23 · 1032 阅读 · 0 评论 -
MVC,MVP,MVVM的区别
MVC软件可以分为三部分视图(View):用户界面控制器(Controller):业务逻辑模型(Model):数据保存各部分之间的通信方式如下:View传送指令到ControllerController完成业务逻辑后,要求Model改变状态Model将新的数据发送到View,用户得到反馈Tips:所有的通信都是单向的。互动模式接受原创 2017-02-09 12:38:48 · 974 阅读 · 0 评论 -
单例模式
定义保证一个类仅有一个实例,并提供一个访问它的全局访问点。Singleton:负责创建Singleton类自己的唯一实例,并提供一个getInstance的方法,让外部来访问这个类的唯一实例。饿汉式: private static Singleton uniqueInstance = new Singleton(); 懒汉式 private static Sin原创 2017-02-09 12:42:18 · 266 阅读 · 0 评论 -
android 四大应用主键之 --- Service(服务)
Service是一种在后台长期运行的,没有界面的组件,由其他组件调用开始运行;服务不太会被kill,即使在内存不足时被kill,当内存恢复时,服务会自动复活,例如下载就可以放入服务中来做,下载时,启动服务,完成时,关闭服务; 1、创建与使用Service1)、定义类继承Service, 清单文件中声明,同样也可以配置意图过滤;2)、使用Intent来开启Service,在其他组原创 2016-12-13 16:03:54 · 900 阅读 · 0 评论 -
Android的数据存储形式
SQLite:SQLite是一个轻量级的数据库,支持基本的SQL语法,是常被采用的一种数据存储方式。 Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的apiSharedPreference: 除SQLite数据库外,另一种常用的数据存储方式,其本质就是一个xml文件,常用于存储较简单的参数设置。File: 即常说的文件(I/O)原创 2017-02-09 12:12:50 · 244 阅读 · 0 评论 -
Intent可以传递哪些数据类型。
通过查询Intent/Bundle的API文档,我们可以获知,Intent/Bundle支持传递基本类型的数据和基本类型的数组数据,以及String/CharSequence类型的数据和String/CharSequence类型的数组数据。而对于其它类型的数据貌似无能为力,其实不然,我们可以在Intent/Bundle的API中看到Intent/Bundle还可以传递Parcelable(包裹化,原创 2017-02-09 12:11:45 · 1062 阅读 · 0 评论 -
能否保证service不被杀死
目前能否保证service不被杀死Service设置成START_STICKYkill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样提升service优先级在AndroidManifest.xml文件中对于intent-filter可以通过android:priority = "1000"这个属性设置最高优先级,1000是最高值,如果数字越小则优先级越原创 2017-02-09 12:10:43 · 281 阅读 · 0 评论 -
什么是面向对象思想
面向对象是一种思想,是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节;这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种优化,操作起来更加的方便,简化了过程。面向对象有三大特征:封装性、继承性、多态性,其中封装性指的是隐藏了对象的属性和实现细节,仅对外提供公共的访问方式,这样就隔离了具体的变化,便于使用,提高了复用性和安原创 2016-12-13 15:02:08 · 70536 阅读 · 6 评论 -
final, finally, finalize的区别
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 内部类要访问局部变量,局部变量必须定义成final类型 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用原创 2016-12-13 14:46:14 · 159 阅读 · 0 评论 -
String、StringBuilder、StringBuffer、CharSequence 区别
1)String StringBuilder 和StringBuffer都实现了字符序列.2) String类:是常量,不可变.3) StringBuilder类;只可以在单线程的情况下进行修改(线程不安全). 4) StringBuffer类:可以在多线程的情况下进行改变(线程安全). 5)Stringbuilder比StringBuffer效率高,应该尽量使原创 2016-12-13 14:51:57 · 324 阅读 · 0 评论 -
Java 基础之继承与接口的区别
· 抽象类:抽象类体现了数据抽象的思想,是实现多态的一种机制。它定义了一组抽象的方法,至于这组抽象方法的具体表现形式由派生类来实现。同时抽象类提供了继承的概念,它的出发点就是为了继承,否则它没有存在的任何意义。所以说定义的抽象类一定是用来继承的,同时在一个以抽象类为节点的继承关系等级链中,叶子节点一定是具体的实现类。在语法方面: 1.由abstract关键词修饰的类称之为抽象类。原创 2016-12-13 14:54:42 · 311 阅读 · 0 评论 -
集合
1、特点:存储对象;长度可变;存储对象的类型可不同;2、集合框架:2)Collection(1)List:有序的;元素可重复,有索引(add(index, element)、add(index, Collection)、remove(index)、set(index,element)、get(index)、subList(from, to)、listIterator())①Ar原创 2016-12-13 15:09:12 · 263 阅读 · 0 评论 -
Android四大组件
Android四大组件1. ContentProvider === 共享应用程序内的数据, 在数据修改时可以监听2. Activity === 供用户操作的界面3. BroadcastReceiver === 用来接收广播, 可以根据系统发生的一些时间做出一些处理4. Service === 长期在后台运行的, 没有界面的组件, 用来在后台执行一些耗时的操作原创 2016-12-13 15:16:45 · 150 阅读 · 0 评论 -
android 四大应用主键之 --- ContentProvider (内容提供者)
1、特点①、可以将应用中的数据对外进行共享;②、数据访问方式统一,不必针对不同数据类型采取不同的访问策略;③、内容提供者将数据封装,只暴露出我们希望提供给其他程序的数据(这点有点类似Javabeans);④、内容提供者中数据更改可被监听;2、创建内容提供者Ø 定义类继承ContentProvider,根据需要重写其内容方法(6个方法):l onCreat原创 2016-12-13 15:21:01 · 375 阅读 · 0 评论 -
android 四大应用主键之 --- Activity
描述:1)表示用户交互的一个界面(活动),每一个activity对应一个界面2)是所有View的容器:button,textview,imageview;我们在界面上看到的都是一个个的view3)有个ActivityManager的管理服务类,用于维护与管理Activity的启动与销毁;---Activity启动时,会把Activity的引用放入任务栈中4)一个应用程序可以被别原创 2016-12-13 15:26:58 · 949 阅读 · 0 评论 -
Activity的生命周期详解
1)Acitivity三种状态a. 运行:activity在最前端运行;b. 停止:activity不可见,完全被覆盖;c. 暂停:activity可见,但前端还有其他activity,注意:在当前Activitiiy弹出的对话框是Activity的一部分,弹出时,不会执行onPause方法;2)生命周期相关的方法(都是系统自动调用,都以 on开头):a. onCreate原创 2016-12-13 15:36:42 · 245 阅读 · 0 评论 -
横竖屏切换与信息的保存恢复
切换横竖屏时,会自动查找layout-port 、layout-land中的布局文件,默认情况下,切换时,将执行摧毁onPause onStop onDestroy,再重置加载新的布局onCreate onStart onResume;切换时如果要保存数据, 可以重写: onSaveInstanceState();恢复数据时, 重写: onRestoreInstanceState(原创 2016-12-13 15:39:30 · 473 阅读 · 0 评论 -
应用程序、进程、任务栈的区别
①、应用程序:四大组件的集合在清单文件中都放在application节点下对于终端用户而言,会将其理解为activity②、进程:操作系统分配的独立的内存空间,一般情况下,一个应用程序会对应一个进程,特殊情况下,会有多个进程一个应用程序会对应一个或多个进程③、任务栈:task stack(back stack)后退栈记录用户的操作步骤,维护用户的操作体验,专门针原创 2016-12-13 15:46:48 · 1219 阅读 · 0 评论 -
Activity的四种启动模式
1)任务栈的概念问:一个手机里面有多少个任务栈?答:一般情况下,有多少个应用正在运行,就对应开启多少个任务栈; 一般情况下,每开启一个应用程序就会创建一个与之对应的任务栈;二般情况下,如launchMode为 singleInstance,就创建自己单独的任务栈;2)任务栈的作用:它是存放Activity的引用的,Activity不同的启动模式,对应不同的任务栈的存放;原创 2016-12-13 15:44:29 · 503 阅读 · 0 评论 -
OOM异常的处理
一、内存溢出如何产生的Android的虚拟机是基于寄存器的Dalvik,它的最大堆大小一般是16M,有的机器为24M。因此我们所能利用的内存空间是有限的。如果我们的内存占用超过了一定的水平就会出现OutOfMemory的错误。内存溢出的几点原因总结:1、资源释放问题:程序代码的问题,长期保持某些资源(如Context)的引用,造成内存泄露,资源得不到释放2、对象内存过大问题:原创 2016-12-13 16:24:31 · 528 阅读 · 0 评论 -
Android中的动画,选择器,样式和主题的使用
一、动画:1、动画的分类:1)、Tween动画:这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;2)、Frame动画:传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。1)Frame 帧动画 AnimationDrawable1、使用AnimationDrawable来操作:在res目录下,新建drawable与anim目录:dra原创 2016-12-13 17:15:27 · 1375 阅读 · 0 评论 -
对各种引用的简单了解
1.1 临界状态的处理Ø 临界状态:当缓存内容过多,同时系统,内存又相对较低时的状态;Ø 临界状态处理:1. 低内存预警:每当进行数据缓存时需要判断当前系统的内存值是否低于应用预设的最低内存;如果是,提示用户应用将在低内存环境下运行;Tips:Intent.ACTION_DEVICE_STORAGE_LOW;设备内存不足时发出的广播,此广播只能由系统使用,其它原创 2016-12-13 17:24:11 · 206 阅读 · 0 评论 -
PopupWindow的常用方法
1.PopupWindow(View contentView, int width, int height)构造方法, 指定包含的视图,宽度和高度2.showAsDropDown(View anchor, int xoff, int yoff)显示在指定视图的下面,指定视图,x轴和y轴上的偏移值3.setBackgroundDrawable(Drawable原创 2017-02-13 18:22:25 · 391 阅读 · 0 评论