Android中的一些基础知识(二)
来源:互联网 发布:中国网文在国外知乎 编辑:程序博客网 时间:2024/05/25 05:34
这几天在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看。
简单介绍一下Activity的生命周期
在API文档中对生命周期回调的函数描述的很详细,这里我只是翻译了一下。- onCreate:当Activity第一次被创建的时候调运。应该在这个回调函数中做所有的初始化操作,比如:创建View,给lists绑定数据等。在这个函数执行完后,通常会调运onStart方法。Always followed by onStart()(这句就不用翻译了吧)
- onRestart:当Activity被stop后,有重新启动的时候调运。Always followed by onStart()(这句就不用翻译了吧)
- onStart:当Activity对用户可见之前调运。当Activity要显示到前台(对用户可见)时,Followed by onResume();当Activity要隐藏时,Followed by onStop() 。
- onResume:当Activity开始用用户交互的时候回调此方法。此时这个Activity在Activity栈的顶端。Always followed by onPause().
- onPause:当系统准备打开另一个Activity的时调用。此方法通常被用来保存当前的数据、停止动画、一些消耗cpu的操作等。并且应该处理的很及时。
- onStop:当Activity对用户不可见的时候调运。
- onDestroy:在Activity被销毁之前调运。
Activity的这几个生命周期函数是成对出现的:onCreate和onDestroy,onStart和onStop(Activity的View已被创建,但对用户不可见),onResume和onPause(Activity对用户仍然可见)。
- 如果Activity A正在运行,现在打开Activity B,Activity A、B的生命周期方法的执行顺序是怎样的?
在Android API中是这样onPause方法的:
Called when the system is about to start resuming another activity.
它是说当系统准备打开另一个Activity的时候调用onPause方法。因此,此过程应该是这样的:
通过运行程序,打印log,也可以验证这个的结论,log截图如下:
两个Activity之间怎么传递数据?
基本的数据可以通过Intent的putExtra()来传递,如果是其他数据类型,可以通过Intent的putExtras()来传递,此时改函数里需要传递一个Bundle类型的数据,Bundle可以通过如下两种方式来创建
Bundle bundle=new Bundle(); bundle.putSerializable("data",obj);
或者
Bundle bundle=new Bundle(); bundle.putParcelable("data",obj);
其中 obj分别需要继承自Serializable或者Parcelable。这里说一下Serializable和Parcelable是区别。Serializable是Java中的,它是将数据以二进制的形式写入的文件中来保存的,需要时就从文件中读取。而Parcelable是Android中独有的,它是将数据写入到内存中,用的时候直接从内存中度取,因此效率较高,但是Parcelable不能放较大的数据,因为这样会导致OOM。
描述一下Service的生命周期、启动方式及区别、如何停止Service?
在Service的生命周期中被调用的方法有:onCreate、onStart、onDestroy、onBind、onUnbind,显然比Activity的少许多。
Service的启动方式有两种:- 通过startService:
Service会经过onCreate,onStart,然后运行,在调用stopService时,会回调onDestroy方法,停止Service。如果此种情况下打开Service的Activity退出前不调运stopService,次Service会一直运行,直至被系统回收(当系统内存不够时)。 - 通过bindService:
Service会经过onCreate,onBind,然后运行,在调用unBindService时,会回调onDestroy方法,停止Service。如果此种情况下打开的Service会和打开它的Activity绑定在一起,Activity销毁,Service也被销毁。
注:一个Service只会被创建一次,当它执行完onCreate方法后,调运再startService,只会执行onStart方法,调运再bindService,只会执行onBind方法。
被start的Service只能调运stopService来停止Service,被bind的Service只能调运unBindService来停止Service。同时调运了start、bind的Service则分别需要调运stopService、unBindService来停止Service。当然,由于系统内存不够,Service被回收的情况例外。- 通过startService:
- Android中的一些基础知识(二)
- Android中的一些基础知识
- Android中的一些基础知识(一)
- Android中的一些基础知识(三)
- Android基础知识(二)
- WEB代码的一些基础知识(二)
- java学习中一些基础知识(二)
- Android各种基础知识(二)
- Android基础知识总结(二)
- MFC中的一些基础知识
- Swift中的基础知识总结(二)
- Android系统回顾(二):Android基础知识
- Android的一些基础知识(布局等)
- android一些基础知识
- 一些Android基础知识
- 一些Android 基础知识
- Android基础知识二(应用程序框架)
- android 基础知识二
- java 包和import关键字。
- spring AOP原理
- duplicate symbol重复导入某一文件
- 前端学习第一天
- prim求最小生成树——Highways
- Android中的一些基础知识(二)
- MySQL学习(数据库和表的基本操作)
- Android学习资源网站大全
- SQL数据库课程设计第一周
- BZOJ 3997 TJOI2015 组合数学
- 深入理解position: fixed
- 总结android:scaleType的使用
- android获取今天00:00时间戳的方法
- 每天一个Linux命令之vmstat