android基本知识点总结.docx

上传人:b****2 文档编号:12910014 上传时间:2023-04-22 格式:DOCX 页数:8 大小:40.48KB
下载 相关 举报
android基本知识点总结.docx_第1页
第1页 / 共8页
android基本知识点总结.docx_第2页
第2页 / 共8页
android基本知识点总结.docx_第3页
第3页 / 共8页
android基本知识点总结.docx_第4页
第4页 / 共8页
android基本知识点总结.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

android基本知识点总结.docx

《android基本知识点总结.docx》由会员分享,可在线阅读,更多相关《android基本知识点总结.docx(8页珍藏版)》请在冰豆网上搜索。

android基本知识点总结.docx

android基本知识点总结

一,android四大组件

Activity、Service、BroadcastReceiver、ContentProvider

二,Activity生命周期

三,横竖屏切换时的生命周期

1、新建一个Activity,并把各个生命周期打印出来

2、运行Activity,得到如下信息

10-2302:

35:

:

INFO/chenys(4385):

onCreate-->

10-2302:

35:

:

INFO/chenys(4385):

onStart-->

10-2302:

35:

:

INFO/chenys(4385):

onResume-->

3、按crtl+f12切换成横屏时

10-2302:

36:

:

INFO/chenys(4385):

onSaveInstanceState-->

10-2302:

36:

:

INFO/chenys(4385):

onPause-->

10-2302:

36:

:

INFO/chenys(4385):

onStop-->

10-2302:

36:

:

INFO/chenys(4385):

onDestroy-->

10-2302:

36:

:

INFO/chenys(4385):

onCreate-->

10-2302:

36:

:

INFO/chenys(4385):

onStart-->

10-2302:

36:

:

INFO/chenys(4385):

onRestoreInstanceState-->

10-2302:

36:

:

INFO/chenys(4385):

onResume-->

4、再按crtl+f12切换成竖屏时,发现打印了两次相同的log

10-2302:

38:

:

INFO/chenys(4385):

onSaveInstanceState-->

10-2302:

38:

:

INFO/chenys(4385):

onPause-->

10-2302:

38:

:

INFO/chenys(4385):

onStop-->

10-2302:

38:

:

INFO/chenys(4385):

onDestroy-->

10-2302:

38:

:

INFO/chenys(4385):

onCreate-->

10-2302:

38:

:

INFO/chenys(4385):

onStart-->

10-2302:

38:

:

INFO/chenys(4385):

onRestoreInstanceState-->

10-2302:

38:

:

INFO/chenys(4385):

onResume-->

10-2302:

38:

:

INFO/chenys(4385):

onSaveInstanceState-->

10-2302:

38:

:

INFO/chenys(4385):

onPause-->

10-2302:

38:

:

INFO/chenys(4385):

onStop-->

10-2302:

38:

:

INFO/chenys(4385):

onDestroy-->

10-2302:

38:

:

INFO/chenys(4385):

onCreate-->

10-2302:

38:

:

INFO/chenys(4385):

onStart-->

10-2302:

38:

:

INFO/chenys(4385):

onRestoreInstanceState-->

10-2302:

38:

:

INFO/chenys(4385):

onResume-->

5、修改,把该Activity添加android:

configChanges="orientation",执行步骤3

10-2302:

42:

:

INFO/chenys(4875):

onSaveInstanceState-->

10-2302:

42:

:

INFO/chenys(4875):

onPause-->

10-2302:

42:

:

INFO/chenys(4875):

onStop-->

10-2302:

42:

:

INFO/chenys(4875):

onDestroy-->

10-2302:

42:

:

INFO/chenys(4875):

onCreate-->

10-2302:

42:

:

INFO/chenys(4875):

onStart-->

10-2302:

42:

:

INFO/chenys(4875):

onRestoreInstanceState-->

10-2302:

42:

:

INFO/chenys(4875):

onResume-->

6、再执行步骤4,发现不会再打印相同信息,但多打印了一行onConfigChanged

10-2302:

44:

:

INFO/chenys(4875):

onSaveInstanceState-->

10-2302:

44:

:

INFO/chenys(4875):

onPause-->

10-2302:

44:

:

INFO/chenys(4875):

onStop-->

10-2302:

44:

:

INFO/chenys(4875):

onDestroy-->

10-2302:

44:

:

INFO/chenys(4875):

onCreate-->

10-2302:

44:

:

INFO/chenys(4875):

onStart-->

10-2302:

44:

:

INFO/chenys(4875):

onRestoreInstanceState-->

10-2302:

44:

:

INFO/chenys(4875):

onResume-->

10-2302:

44:

:

INFO/chenys(4875):

onConfigurationChanged-->1

7、把步骤5的android:

configChanges="orientation"改成android:

configChanges="orientation|keyboardHidden",执行步骤3,就只打印onConfigChanged

10-2302:

46:

:

INFO/chenys(5193):

onConfigurationChanged-->2

8、执行步骤4

10-2302:

47:

:

INFO/chenys(5193):

onConfigurationChanged-->2

10-2302:

47:

:

INFO/chenys(5193):

onConfigurationChanged-->1

总结:

1、不设置Activity的android:

configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

2、设置Activity的android:

configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

3、设置Activity的android:

configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

四service以及service的生命周期

两种用处:

后台运行和跨进程访问

两种模式:

startService()/bindService()

模式场合:

调用者与服务之间没有关连,即使调用者退出了,服务仍然运行即用startService(),调用者与服务绑定在了一起,调用者一旦退出,服务也就终止则用bindService()

生命周期:

service的生命周期没有像activity里的onstop,主要经历创建、开始、销毁三个阶段,由于有两种模式的存在,其生命周期有两种体现方式

如果打算采用()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。

  如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。

  采用startService()方法启动的服务,只能调用()方法结束服务,服务结束时会调用onDestroy()方法。

  onBind()只有采用()方法启动服务时才会回调该方法。

该方法在调用者与服务绑定时被调用,当调用者与服务已经绑定,多次调用()方法并不会导致该方法被多次调用。

  采用()方法启动服务时只能调用onUnbind()方法解除调用者与服务解除,服务结束时会调用onDestroy()方法。

5.Android里的两种动画以及区别

两种动画:

补间动画TeenAnimation&&逐帧动画FrameAnimation

区别:

Teen:

是定义一个开始和结束,中间的部分由程序运算得到

Frame:

其实和gif图片差不多,有帧的概念,是一个动画数组

6.Aidl的全称以及在android中的作用

全称:

androidinterfacedefinitionlanguage

作用:

跨进程访问数据

实现方式:

其一般与service连用,在service里new一个其stub的实例,并实现其aidl里面的方法即可

7.Android进程与进程,线程与线程之间,应用程序与应用程序之间如何通信

进程与进程:

利用aidl

线程与线程:

一般体现在ui主线程和子线程之间的通信,用handle机制即可

应用程序与应用程序:

Broastcast

8.Android里解析xml的几种方式及区别

三种方式:

dom(DocumentObjectModel),sax(SimpleAPIforXML),pull

优缺点:

Dom优点:

使用DOM操作XML的代码看起来是比较直观,并且在某些方面比基于SAX的实现更加简单

Dom缺点:

DOM需要将XML文件的所有内容以文档树方式存放在内存中,所以内存的消耗比较大

Sax优点:

解析速度快,ContentHandler对象可以是多个,内存消耗少

Sax缺点:

必须实现事件处理程序,不能修改文档,不能随机访问

pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字

9.Android里的数据存储方式

1,SharePreferences

2,利用io流文件存取

3,网络存取(httpclient和httpServer)

4,sqlite

5,属性系统

6,使用ContentProvider存储数据,其实这快个人认为不应该纳入存储方式,他只是定义了一种数据共享的标准接口。

10.在我们实际的开发过程中需要注意的细节

1.在进行界面布局的时候,一定要考虑到横竖屏的切换,尽量做到后期不用适配很多的机器。

2.对于Activity的生命周期的控制,一定要严谨,考虑周全,什么时候查询,什么时候移除监听器,activity的三种生命周期的切换,保存界面信息,恢复界面信息,都要在代码编写之前尽量考虑周全,切不可跟着bug走。

3.经常整理代码,类中用不到的属性,方法,一定要删除,不要想着以后可能用到,99%的情况是以后绝对用不到,这样做可以避免以后代码整理的混乱

4.工作台的编码和工程的编码统一使用utf-8,同时将家里的电脑上的工作台与之同步,避免乱码。

5.要做好工作记录,公司小,没有开发文档,这个没办法,自己尽量把自己的工作记录写好,例如某项功能的大体实现思路啊,遇到的难点啊,解决的办法啊等等,以后看的时候也不至于太费劲。

6.方法名,属性名的定义切不可偷一时之懒,随便胡弄一个,多花点时间起个好名字,以后能省很多的事。

7.xml进行页面布局的时候,尽量能够做到元素的重用,同时xml的名称很重要,凡是activity的布局文件,后面都要加个_activity的后缀,列表的ItemView的布局,都要加个_item的后缀,一定要做到统一,否则后期会很乱

8.res目录中用不到的drawable,styles,等等资源文件及时删除,后期删除会很麻烦,谁知道这个drawable有没有用到。

9.线程,线程,这个必须重视重视再重视,能不开就不开,能少开就少开,能用Handler代替的就用Handler。

开启一个线程的时候一定要考虑到什么时候,如何关闭这个线程。

十一.BroadcastReceiver的使用

两种方式:

xml、程序里动态注册

如果是xml方式,则在的注册一个receiver,并在intent-filter标签里加上一个action,这个receiver对应的class得继承BroadcastReceiver,并重写其onReceive方法即可,如果是程序动态注册,得new一个BroadcastReceiver实例b和new一个IntentFilter实例i,并在oncreat方法里通过registerReceiver(b,i)这个方法动态注册即可。

12.Android里常见的设计模式及例子

1,单例模式:

在framwork层的类里有很多例子,比如PowerManagerServicepower=newPowerManagerService();,power);将其加入到ServiceManager中。

以后,如果其它地方要用到这个实例,只能通过(POWER_SERVICE),从理论上说,PowerManagerService的构造函数并不是private的,而且也没有一个static的PowerManagerService变量存在,但如果我们在使用这个service的时候如果去new一个该service的实例的话,语法上讲行得通,但这就违背了Android平台Framework中service的创建思想。

所以用一种模式不是用其定义而是用其举一反三。

模式:

xml的布局文件对应了mvc中的view部分,负责显示界面;android中的.java文件,即activity文件对应于mvc中的model,负责逻辑处理;而android中的文件则对应于mvc中的controller,负责协调view于model之间的工作。

3.抽象工厂模式,对象的创建型模式。

这种设计模式在Android中运用相当广泛。

现仅仅以Android平台JVM的DatagramSocket的实现为例来介绍之。

DatagramSocket是一个实现了UDPsocket的类。

a.相关代码:

1.:

publicinterfaceSocketOptions{...}

2.:

publicabstractclassDatagramSocketImplimplementsSocketOptions{...}

3.:

publicabstractclassSocketImplimplementsSocketOptions{...}

4.:

publicinterfaceDatagramSocketImplFactory{

DatagramSocketImplcreateDatagramSocketImpl();

}

5.

publicinterfaceSocketImplFactory{

SocketImplcreateSocketImpl();

}

6.

b.简要说明:

从名字的命名就可以看出来,这是典型的abstractfactory模式.这里,DatagramSocket就是client.更加详细的代码实现,请各位自己去看Android源码。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机硬件及网络

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1