总结1

1.为什么子线程不能访问更新Ui
在onCreate方法中创建了子线程并访问UI,没有崩溃,因为ViewRootImpl还没有创建的,无法检测当前线程是否是UI线程。正常情况子线程会在很短的延时操作后ViewRootImpl已经创建了,可以执行checkThread方法检查当前线程。如果是非UI线程则会抛出异常  


2.View的绘制原理

View的绘制原理 - CSDN博客


3.Android 强引用,弱引用,软引用,虚引用

1.  强引用

以前我们使用的大部分引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。

2.软引用(SoftReference)

如果一个对象只具有软引用,那就类似于可有可物的生活用品。如果内存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。

3.弱引用(WeakReference)

如果一个对象只具有弱引用,那就类似于可有可物的生活用品。弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它 所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程, 因此不一定会很快发现那些只具有弱引用的对象。

4. 虚引用

用的比较少,就不管它了


5.AIDL

AIDL:Android Interface Definition Language,即Android接口定义语言。 Android 使用AIDL提供公开服务接口,使得不同进程间可以相互通信。 建立AIDL服务要比建立普通的服务复杂一些,具体步骤如下: (1)在Eclipse Android工程的Java包目录中建立一个扩展名为aidl的文件。该文件的语法类似于Java代码,但会稍有不同。 (2)如果aidl文件的内容是正确的,ADT会自动生成一个Java接口文件(*.java)。 (3)建立一个服务类(Service的子类)。 (4)实现由aidl文件生成的Java接口。 (5)在AndroidManifest.xml文件中配置AIDL服务,尤其要注意的是,标签中android:name的属性值就是客户端要引用该服务的ID,也就是Intent类的参数值。


6,进程

前台进程(foreground process):需要用户当前正在进行的操作。一般满足以下条件:

屏幕顶层运行Activity(处于onResume()状态),用户正与之交互 

有BroadcastReceiver正在执行代码 

有Service在其回调方法(onCreate()、onStart()、onDestroy())中正在执行代码

这种进程较少,一般来作为最后的手段来回收内存

可视进程(visible process):做用户当前意识到的工作。一般满足以下条件:

屏幕上显示Activity,但不可操作(处于onPause()状态) 

有service通过调用Service.startForeground(),作为一个前台服务运行 

含有用户意识到的特定的服务,如动态壁纸、输入法等

这些进程很重要,一般不会杀死,除非这样做可以使得所有前台进程存活。

服务进程(service process):含有以startService()方法启动的service。虽然该进程用户不直接可见,但是它们一般做一些用户关注的事情(如数据的上传与下载)。

这些进程一般不会杀死,除非系统内存不足以保持前台进程和可视进程的运行。

对于长时间运行的service(如30分钟以上),系统会考虑将之降级为缓存进程,避免长时间运行导致内存泄漏或其他问题,占用过多RAM以至于系统无法分配充足资源给缓存进程。

缓存/后台进程(cached/background process):一般来说包含以下条件:

包含多个Activity实例,但是都不可见(处于onStop()且已返回)。

系统如有内存需要,可随意杀死。


7.注册广播

一种是在Activity代码块中使用registerRceiver注册

一种是在Mainifest中注册


8.Toast

在Android源码中的NotificationManagerService.java这个类中定义了两个静态变量,分别对应Toast.LENGTH_LONG(3.5秒)和Toast.LENGTH_SHORT(2秒)的值



9.Intent可以传递哪些类型的数据

1. 8种基本数据类型及其数组byte   boolean char short int long double float

2. String(String实现了Serializable)/CharSequence实例类型的数据及其数组

3. 实现了Parcelable的对象及其数组

4. 实现了Serializable的对象及其数组


10.数据库管理

getReadableDatabase()和getWriteableDatabase()都可以得到一个可既可以读又可以写的数据库对象,不同的是,当磁盘空间满了之后,getReadableDatabase()得到的是一个只读的对象,而getWriteableDatabase()则会抛出异常。(getReadableDatabase()方法中会调用getWritableDatabase()方法)


11.NDK

NDK是一系列工具的集合,NDK提供了一系列的工具,帮助开发者迅速的开发C/C++的动态库,并能自动将so和java 应用打成apk包。

NDK集成了交叉编译器,并提供了相应的mk文件和隔离cpu、平台等的差异,开发人员只需简单的修改mk文件就可以创建出so。

NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。


12.SimpleAdapter

使用SimpleAdapter作为适配器是,会按照如下顺序判断View:

1、该view是否实现checkable接口

2、该view是否是TextView

3、该view是否是ImageView

如果以上三种类型都不是,就会抛出IllegalStateExeception


13.GLSurfaceView

GLSurfaceView是SurfaceView的一个实现。它用一个专门的surface去显示OpenGL渲染的图像。

1>管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上。

2> 管理一个EGL display,它能让opengl把内容渲染到上述的surface上。

3> 用户自定义渲染器(render)。

4> 让渲染器在独立的线程里运作,和UI线程分离。

5> 支持按需渲染(on-demand)和连续渲染(continuous)。

6> 一些可选工具,如调试。


14.


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 1.List<T>和List<?>的区别? List<T>是泛型,List<?>是泛型类型通配符,相当于List<...
    小酷哥阅读 890评论 0 2
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,392评论 25 707
  • 问题归纳 1.如何在OC中调用swift的文件? 步骤:直接托swift文件 --> 建立桥接头文件 --> ta...
    chen千千万万遍阅读 3,843评论 0 16
  • 以下有大量剧透和吐槽,带有个人主观感受,欢迎评论区或者后台留言交流。 我没有经历12年的等待,只是在电影上映前一段...
    古铃鲸阅读 846评论 3 1
  • 今天是个好天气,我和妈妈一同来到外婆家,同行的还有我的弟弟。来到外婆家,看到了一个可爱的小表弟他的名字叫张无闻。我...
    蜗蜗_lisa阅读 178评论 0 0