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

一、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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.什么是Activity?问的不太多,说点有深度的 四大组件之一,一般的,一个用户交互界面对应一个activit...
    JoonyLee阅读 11,031评论 2 51
  • 哎呀呀 ,马上就要面临找工作了,媛媛心里紧张呀. 作为一个即将毕业的Android程序媛,开始面临找工作了,...
    左神话阅读 10,404评论 7 59
  • 转自 1. 什么是Activity? 四大组件之一,一般的,一个用户交互界面对应一个activity setCon...
    joe1632阅读 5,235评论 0 7
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,067评论 25 709
  • “雨声潺潺,像住在溪边,宁愿天天下雨,以为你是因为下雨不来。” 是夜,雨声入耳。风卷起窗帘,夹杂着冰凉的雨惊醒了睡...
    念念林木阅读 4,695评论 1 4

友情链接更多精彩内容