Android基础(1) Activity详解

(1)Activity间的通信方式
(2)横竖屏切换的时候,Activity 各种情况下的生命周期
(3)Activity的四种启动模式对比
(4)Activity与Fragment之间生命周期比较
(5)Activity上有Dialog的时候按Home键时的生命周期
(6)两个Activity 之间跳转时必然会执行的是哪几个方法?
(7)弹出Dialog,生命值周期回调方法

(8)Activity状态保存用于恢复
(9)Activity的启动过程
(10)下拉状态栏是不是影响activity的生命周期
(11)如果在onStop的时候做了网络请求,onResume的时候怎么恢复?

一. Activity间的通信方式

1)Intent携带相关信息
2)Broadcast,localbroadcast传递
3)数据存储方式:sharedPreference/SQLite/File等。A中存储,B中读取。
4)使用静态变量:在A中将静态变量赋值,B中读取并置为空。

二. 横竖屏切换的时候 Activity的生命周期,及其他情况的生命周期

1)切换屏幕
正常运行时:
onCreate --> onStart --> onResume -->

切成横屏时:
onSaveInstance --> onStop --> onDestroy
-->onCreate -->onStart --> onRestoreInstance --> onResume

切回成竖屏时:
--> onSaveInstance --> onStop --> onDestroy --> onCreate --> onStart --> onRestoreInstance -->onResume

三. Activity的四种启动模式

Android manifest中 android:launchmode可设定以下四种。
1)standard是默认模式。当Intent发送的时候,Activity总是被创建一个新的出来单独工作。
2)singleTop 顶部复用的模式。和standard唯一的区别是如果在栈顶已经有一个相同类型的Activity实例,Intent不会再创建一个Activity。需要使用onCreate和onNewIntent()两个方法处理发来的intent,以满足不同情况。
3)singleTask。此模式的Activity只允许在系统中有一个实例。如果系统中已经有了一个实例,持有这个实例的任务将移动到顶部,同时intent将被通过onNewIntent()发送。如果没有创建过的话,直接推到顶部
4)singleInstance。application打开了它,会单开一个ActivityStack,该Activity仅有一个activity了。

四. Activity与Fragment生命周期的比较

Fragment在依附的Activity完成了创建之后自己再开始onStart(),而销毁的时候与Activity本身无关了,所以需要detach掉关联关系。

五. Activity上有Dialog的时候按Home键时的生命周期

onSaveInstance --> onStop
重新回到页面的时候
onStart --> onResume

六. 两个Activity 之间跳转时必然会执行的是哪几个方法?

A打开B,然后返回的情况如下。
A : onCreate --> onStart --> onResume
-> B:onCreate --> onStart --> onResume
-> A: onSaveInstance --> onStop

此时返回: A:onStart --> onResume
-> B: onStop --> onDestroy

七. 弹出Dialog 生命周期回调方法?

当前Activity产生事件弹出Toast和AlertDialog的时候Activity的生命周期不会有改变。

八. Activity状态保存用于恢复
@Override
protected void onSaveInstanceState(Bundle outState) {
    outState.putInt(position, mViewPager.getCurrentItem());
    super.onSaveInstanceState(outState);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    if (savedInstanceState != null) {
        mCurrentIndex = savedInstanceState.getInt(position);
}
九. Activity的启动过程
20170226170728194.jpeg
十. 下拉状态栏是不是影响activity的生命周期

没有任何影响。

十一. 如果在onStop的时候做了网络请求,onResume的时候怎么恢复?

首先,我在思考这是什么样的场景。
被销毁的是什么,需要被恢复的又是什么呢?
执行在onStop当中有网络请求肯定不合理,而是执行到onStop生命周期的时候有网络请求发出了,那么需要被恢复的是网络请求。

暂时没有想到好的方法。是通过onSaveInstanceState保留请求的参数吗?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Activity 在应用中的表现主要是显示各种UI元素,并且为这些UI元素设置时间处理函数,使得用用户可以与这些U...
    sssssss_阅读 3,966评论 0 1
  • 1.Activity 说下Activity的生命周期? 答: onStart()和onResume()/onPau...
    KD小帅阅读 5,501评论 0 1
  • 哎呀呀 ,马上就要面临找工作了,媛媛心里紧张呀. 作为一个即将毕业的Android程序媛,开始面临找工作了,...
    左神话阅读 10,362评论 7 59
  • 一、生命周期 上图是 Activity 和 Fragment 的完整的生命周期函数调用过程,Activity 常规...
    秀花123阅读 5,111评论 4 25
  • 枯木 《素馨花》 【宋】董嗣杲 负得刘王侍女称,何年钟作冢魂英。 月娥暗吐温柔态,海国元标悉茗名。 翠髻云鬟争点缀...
    榆木斋阅读 4,286评论 0 2