Java基础知识整理3——Android篇

2017-05-15  本文已影响0人  Looofter

一、activity生命周期,fragment生命周期,broadcastReceiver生命周期,service生命周期

       activity:onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestroy()

       fragment:onAttach() -> onCreate() -> onCreateView() -> onActivityCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestroyView() -> onDestroy ->onDetach()

       broadcastReceiver:10秒左右,onReceive() 方法开始到结束

       service:

            1.startService(): onCreate() -> onStartCommand() -> service running -> onDestroy()

            2.bindService():onCreate() -> onBind() -> Clients are bound to service -> onUnbind() -> onDestory()

二、service如何操作activity

      1.直接把activity传给service,service通过activity实例随便操作activity

      2.使用接口回调方式,activity实现相应的接口,service通过接口进行回调

      3.使用广播

三、如何解决方法数65K的问题

      使用Android Studio的 gradle 可以构建MutilDex

四、Intent 可以传递哪些数据类型

       1.Serializable

       2.charsequence 主要用来传递String,char等

       3.parcelable

       4.Bundle

五、Activity的启动模式,在AndroidManifest.xml的activity标签修改属性:

       1.Standard:默认标准模式,每启动一个都会创建一个实例

       2.SingleTop:栈顶服用,如果在栈顶就调用onNewIntent复用,从onResume()开始

       3.SingleTask:栈内复用,本栈内只要用该类型Activity就会调到栈顶复用,从onResume()开始

       4.SingleInstance:单例模式,除了3中的特性,系统会单独给该Activity创建一个栈

六、xml 三种解析方式

       DOM:检索和更新效率高;对于特别大的文档,解析和加载整个文档将会很耗资源

       SAX:解析速度快,占用内存小;代码量大,不能倒退

       PULL:小巧轻便,解析速度快,简单易用,可随时停止解析,适用于XML文档较大但只需要文档的一部分时

七、Android线程间通信有哪几种方式

      1.共享变量(内存)

      2.管道

      3.handler机制

八、子线程中能不能new handler?

      子线程可以new一个mainHandler,然后发送消息到UIThread

九、横竖屏切换时候Activity的生命周期

       1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

       2.设置Activity的android:configChanges=“orientation”时,切屏还是会重新调用各个生命周期,切横竖屏时只执行一次

       3.设置Activity的android:configChanges=“orientation | keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

10.浅谈MVC、 MVP、 MVVM区别与联系

      根据项目的需求和方案,选择一个适合的软件架构,极大的减少了开发的成本,与维护的时间。架构清晰,并提升编程速度。更容易进行后续的测试以及定位问题。参考地址:http://blog.csdn.net/donkor_/article/details/54970769

十一、什么是内存泄漏、内存溢出。两者之间的区别

         内存泄露(Memory Leak)指你用new申请了一块内存,但是没有通过free或delete将内存释放,导致这块内存一直处于占用状态内存泄露和硬件没有关系,它是由软件设计缺陷引起的。

         内存溢出(Memory Overflow)指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory。比如你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,就是溢出。

        相同点:都会导致应用程序运行出现问题,性能下降或挂起。

        不同点:

                    1.内存泄露是导致内存溢出的原因之一;内存泄露积累起来将导致内存溢出。

                    2.内存泄露可以通过完善代码来避免;内存溢出可以通过调整配置来减少发生频率,但无法彻底避 免。

参考地址:http://blog.csdn.net/donkor_/article/details/54970769

上一篇下一篇

猜你喜欢

热点阅读