展开

关键词

onSaveInstanceState() 和 onRestoreInstanceState()方法

当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁一个Activity时,onSaveInstanceState() 会被调用。 onSaveInstanceState方法会在什么时候被执行,有这么几种情况: 1、当用户按下HOME键时。 这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activity A是否会被销毁,故系统会调用onSaveInstanceState,让用户有机会保存某些非永久性的数据。 以下几种情况的分析都遵循该原则 2、长按HOME键,选择运行其他的程序时。 3、按下电源按键(关闭屏幕显示)时。 4、从activity A中启动一个新的activity时。 ,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A,这种情况下activity A一般不会因为内存的原因被系统销毁,故activity A的onRestoreInstanceState

19730

超详细的生命周期图-你能回答全吗

into the background as the result of user choice. * For example, when the user presses the Home key, 例如,当用户按下Home键, * Activity#onUserLeaveHint()将会被回调。 * 复制代码 用户手动离开当前activity,会调用该方法,比如用户主动切换任务,短按home进入桌面等。系统自动切换activity不会调用此方法,如来电,灭屏等。 我们一般监听返回键,肯定是重写onKeyDown方法,但是Home键和Menu键就不好监听了。但是有了这个方法。我们可以做统一的监听了。比如要监听用户点了Home键跳回到桌面后。 在Android4.0前面,如果想屏蔽Home键事件,还可以在onAttachedToWindow这么写:@Overridepublic void onAttachedToWindow() { TODO

33420
  • 广告
    关闭

    云产品限时秒杀

    云服务器1核2G首年38元,还有多款热门云产品满足您的上云需求

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    onSaveInstanceState和onRestoreInstanceState触发的时机

    变得“容易”被系统销毁时,该activity的onSaveInstanceState就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候。 activity A)显示在当前task的最上层时,其onSaveInstanceState方法会在什么时候被执行,有这么几种情况: 1、当用户按下HOME键时。 这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activity A是否会被销毁,故系统会调用onSaveInstanceState,让用户有机会保存某些非永久性的数据。 以下几种情况的分析都遵循该原则 2、长按HOME键,选择运行其他的程序时。 3、按下电源按键(关闭屏幕显示)时。 4、从activity A中启动一个新的activity时。 A“确实”被系统销毁了,而如果仅仅是停留在有这种可能性的情况下,则该方法不会被调用,例如,当正在显示activity A的时候,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A

    44170

    onSaveInstanceState和onRestoreInstanceState详解

    当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁 一个Activity时,onSaveInstanceState() 会被调用。 (假定为activity A)显示在当前task的最上层时,其onSaveInstanceState()方法会在什么时候被执行,有这么几种情况:  (1)、当用户按下HOME键时。   这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activity A是否会被销毁,因此系统会调用onSaveInstanceState(),让用户有机会保存某些非永久性的数据 以下几种情况的分析都遵循该原则  (2)、长按HOME键,选择运行其他的程序时。  (3)、按下电源按键(关闭屏幕显示)时。  (4)、从activity A中启动一个新的activity时。   被系统销毁了,而如果仅仅是停留在有这种可能性的情况下,则该方法不会被调用,例如,当正在显示activity A的时候,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A,这种情况下

    1K50

    检查app的activity是否在当前

    Android本来并不允许APP去监听home键事件,所以我们没发像iOS那样通过监听home键事件来做对应的处理。 不过还好Android的Activity的生命周期给我们提供了一种解决这个问题的方法,我们只需要在每个Activity的onStart和onStop中去维持一个计数,如果这个数值大于0,就表示我们的APP activity, Bundle savedInstanceState) { } @Override public void onActivityStarted(Activity activity) (Activity activity) { } @Override public void onActivityStopped(Activity activity) { foregroundActivities activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { } } 实现了自己的类之后

    34290

    Android Activity的生命周期和启动模式详解

    再次启动App时,会执行onCreate()->onStart()->onResume()HOME键:当我们打开应用程序时,比如浏览器,我正在浏览NBA新闻,看到一半时,我突然想听歌,这时候我们会选择按 HOME键,然后去打开音乐应用程序,而当我们按HOME的时候,Activity先后执行了onPause()->onStop()这两个方法,这时候应用程序并没有销毁。 尤其值得注意:应用1启动MainActivity,按home键;打开应用2启动应用1的MainActivity实例。 在按home键,打开应用1,这时候应用1的界面是应该是处于MainActivity界面实例。 比如,在用户按下Home键,它将被调用。比如有电话进来(不属于用户的选择),它就不会被调用。那么系统如何区分让当前activity退到background时使用是用户的选择?

    26910

    Mono for Android 实现高效的导航

    将 ActionBar 设置为下拉列表导航时, 一般不显示 Activity 自身的标题, 因此需要将 Activity 的 Label 标记为空字符串, 并且 Activity 需要实现接口 ActionBar.IOnNavigationListener Activity , 注意是上一级 Activity , 不是上一个 Activity , 关于向上与返回的区别, 可以看看 Android SDK 中的 Providing Ancestral and 要显示向上导航的按钮, 需要在 OnCreate 方法中对 ActionBar 做如下设置: 设置 ActionBarvar actionBar = this.ActionBar; 将 Home 按钮显示为向上 :public override bool OnOptionsItemSelected(Android.Views.IMenuItem item) { 作为示例, 只处理用户点击 Home 按钮的情况 if (item.ItemId == Android.Resource.Id.Home) { 当 Home 按钮被点击时会调用到这里 创建启动上级 Activity 的 Intent var upIntent

    15811

    Android四大组件之一Activity详解

    Activity是Android应用的重要组成单元之一(另外三个是Service、BroadcastReceiver和ContentProvider),而Activity又是Android应用最常见的组件之一 通常一个Android应用需要N个Activity组成,Activity主要负责与用户交互在一个Activity生命周期中有以下方法会被系统回调:onCreate():在创建Activity时被回调,默认重写 ,总是在onStart()以后执行onPause():暂停Activity时被回调onResume():当Activity由暂停状态恢复为活动状态时。 调用该方法后,该Activity位于Activity栈顶。该方法总是在onPause()以后执行onStop():停止Activity时被回调onDestory():销毁Activity时被回调? (3)当我们打开应用程序时,比如浏览器,我正在浏览NBA新闻,看到一半时,突然想听歌,这时候会按HOME键,然后去打开音乐应用程序。当我们按HOME的时候,看一下LogCat??正好对应:?

    28320

    Android通用生命周期

    通用生命周期流程如下: 正常启动: onCreate onStart onPost onCreate onResume onPostResume 转向下一个:activity onPause onStop 从下一个activity返回当前(按机器返回键):onRestart onStart onResume onPostResume 转向上一个activity(按机器返回键):onPause onStop onDestory屏幕待机(黑掉):onPause 屏幕变亮 : onResume onPostResume Home键退出 : onPause onStop Home键导航返回 : onRestart

    23930

    Activity生命周期-你真的了解吗?

    言下之意就是该activity还没有被销毁,而仅仅是一种可能性。这种可能性有哪些?有这么几种情况: 当用户按下HOME键时。 这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activity A是否会被销毁,故系统会调用onSaveInstanceState,让用户有机会保存某些非永久性的数据。 以下几种情况的分析都遵循该原则 长按HOME键,选择运行其他的程序时。 按下电源按键(关闭屏幕显示)时。 从activity A中启动一个新的activity时。 A“确实”被系统销毁了,而如果仅仅是停留在有这种可能性的情况下,则该方法不会被调用,例如,当正在显示activity A的时候,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A (2)可见但非前台Activity——比如Activity中弹出了一个对话框,导致Activity可见但无法和用户直接交互。

    38420

    Android程序员:“如何详解 Activity 的生命周期?”问完被怼了...

    接着,回到正题,关于Activity生命周期,对于网上也有大量博客讲到这个问题,接下来就给大家讲讲Activity的知识:1.Activity生命周期这幅图比较清晰,就不细说,下面我就说说图上没有的吧( 而进程对于App来说是完全透明的,在Activity进入生命周期之前,会先创建好进程,可以把进程理解为Activity的载体。 一个进程中可以有多个Activity,而一个Activity必须且只能存在一个进程里;进程里可以不存在任何Activity,而Activity不能离开进程而孤立存在。 (二)home键、back键、电源键、进程管理器一般情况下按下home键:前台Activity依次回调onPause, onStop;按下back键:前台Activity依次回调onPause, onStop 对于厂商,比如灭屏杀进程,那么这就可能导致按下电源键,Activity的生命周期就玩完了;另外,现在大多数App,拦截返回键功能,使其与home键效果一致,那么不排除有对返回键的极端优化情形。

    41200

    037android初级篇之Activity的几个重要函数

    在同一时间,只存在一个Activity实例。 onKeyDown跟onTouchEvent类似,不过处理的是按键事件moveTaskToBack模拟现在的主流应用最后按Back键时不是强制退出应用或直接结束根Activity,而是采取类Home键效果 上点击某个按钮,跳转到B Activity,然后用户在B Activity上进行一些具体的操作,待操作完成后返回到A Activity,同时常常将B Activity中操作的一些数据返回到A Activity 1.当用户按下HOME键时;2.长按HOME键,选择运行其他的程序时;3.按下电源按键(关闭屏幕显示)时;4.从activity A中启动一个新的activity时;5.屏幕方向切换时,例如从竖屏切换到横屏时 onSaveInstanceState常常用于存储应用程序中当前Activity中重要的状态数据,以免Activity被系统意外杀掉的情况下当用户再次回来时不能找到之前的状态。

    27720

    Android编程实现状态保存的方法分析

    2、当我们在玩游戏的时候,可能又想听歌,然后我们会按home或者back键退出游戏去启动音乐,然后再回到游戏,当我们回到游戏的时候,发现刚刚的状态还是被保存的。这种情况,我们可以这样保存状态。 activity A)显示在当前task的最上层时,其onSaveInstanceState方法会在什么时候被执行,有这么几种情况:1、当用户按下HOME键时。 这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activity A是否会被销毁,故系统会调用onSaveInstanceState,让用户有机会保存某些非永久性的数据。 以下几种情况的分析都遵循该原则 2、长按HOME键,选择运行其他的程序时。 3、按下电源按键(关闭屏幕显示)时。 4、从activity A中启动一个新的activity时。 ,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A,这种情况下activity A一般不会因为内存的原因被系统销毁,故activity A的onRestoreInstanceState

    19431

    Android Activity的启动模式

    : 标准(默认)模式当通过这种模式来启动Activity时,Android总会为目标Activity创建一个新的实例,并将该Activity添加到当前 Task栈中.注意,这种方式不会启动新的Task, 中启动目标Activity,只会创建一个目标Activity实例且会用一个全新的Task栈来装载该Activity实例.并且该Task栈有且仅有一个Activity实例当系统采用singleInstance 模式加载Activity时,又分为以下两种情况:(1)如果将要启动的Activity不存在,那么系统将会先创建一个全新的Task,再创建目标Activity实例并将该Activity实例放入此全新的Task (Task1)中为AC3) 如果点后退键的话,栈结构(Task1)中为A 也就是显示的是A页面而不是B页面4) 如果再点后退的话,会显示 栈结构(Task2)中的B页面 而不是退出程序5) 如果再点击Home 键 退出程序 再点击后台进程图标显示的是B页面 ,如果点击桌面图标的话则显示的是A页面----4) 如果接着上面的第3)步 点Home键 就会清空栈结构(Task2) 再次点击后台进入 如果再点后退的话

    25530

    【Flutter 混合开发】添加 Flutter 到 Android Fragment

    View-Android嵌入原生View-iOS与原生通信-MethodChannel与原生通信-BasicMessageChannel与原生通信-EventChannel添加 Flutter 到 Android Activity 使用新引擎创建 FlutterFragment添加 Flutter 到 Fragment 与添加 Activity 基本一样,如果添加到 Activity 满足需求,建议使用 Activity,因为 Activity Colors.blue, ), routes: { one_page:(context){ return OnePage(); }, two_page:(context){ return TwoPage(); } }, home : MyHomePage(title: Flutter Demo Home Page), ); }} class NewApp extends StatelessWidget { @override Widget context) { return MaterialApp( title: Flutter Demo, theme: ThemeData( primarySwatch: Colors.blue, ), home

    37720

    Unity中Android 触发home,回收覆盖在UnityPlayerActivity上层的activity的问题

    问题最近在开发一个Android SDK的项目,提供给游戏方接入,发现游戏是unity引擎;正常游戏都是只有一个activity(继承UnityPlayerActivity),但是SDK业务交互上需要特定场景会弹出一个或者多个新的 activity在UnityPlayerActivity上,这个时候如果安卓手机点击home回到桌面,再点击图标返回,发现除了UnityPlayerActivity,其他的activity都被回收了。 于是乎,我们帮启动页面的activity改掉,不设置为UnityPlayerActivity 撸码:新建启动Activity(LaunchActivity):public class LaunchActivity extends Activity { public static LaunchActivity launchActivity = null; @Override protected void onCreate onCreate(Bundle bundle) { super.onCreate(bundle); mainActivity = this; }}AndroidManifest的配置: 这样做就可以跳过被home

    1.2K41

    第1章-Activity的生命周期和启动模式(上)

    按了Home键等等另外:可以在onCreate里判断bundle是否为null来判断是新建还是重新创建View 的恢复A系统默认做了一定的恢复,如视图结构,LV的滑动的位置等等(View也有save,restore 优先级前台Activity 正在交互的,onResume状态的Activity可见但非前台,弹了Dialog,依然可见但是不能交互后台Activity ,执行onStop之后Configuration 因为Activity启动需要任务栈,而用Standard模式去启动Activity,默认会进入启动它的Activity所属的任务栈中,而非Activity类型的Context并没有所谓的任务栈.ABC— C,然后按Home回到桌面,然后再单击B的桌面图标,这个时候不是启动B的主Activity,而是重新显示被应用A启动的Activity C(原本来说C是A启动的,那么C应该待在A的任务栈里),或者说C 的任务栈转移到了B的任务栈中(也许这就是re-parenting的含义吧)补充:allowTaskReparenting需要和FLAG_ACTIVITY_RESET_TASK_IF_NEEDED标记合作才行,而从Home

    20740

    Android Activity 生命周期

    onCreateonStartonResumeonWindowFocusChanged: hasFocus: true onWindowFocusChanged: hasFocus: falseonPauseonStoponDestroy 启动后按home 键 Act1: onCreateAct1: onStartAct1: onResumeAct1: onWindowFocusChanged: hasFocus: true 按home键Act1: onWindowFocusChanged 更像是重新启动activity。 来回切换的生命周期变化 以2个Activity启动为例。 onCreate和onStart的区别 activity的状态区别 onCreate在系统首次创建 Activity 时触发。Activity 会在创建后进入已创建状态。 当 Activity 进入“已开始”状态时,系统会调用此回调。onStart() 调用使 Activity 对用户可见,因为应用会为 Activity 进入前台并支持交互做准备。

    19800

    Android应用启动之从Launcher拉起APP(一)

    null : item.user; 添加new task,这样就启动了根activity intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (v ! Use case: user presses home (switches disabled, switch to home, mDidAppSwitch now true); user taps a home icon (coming from home so allowed, we hit here and now allow anyone to switch again). mService.mAppSwitchesAllowedTime = 0) { newTask = true; 创建新的task(新的Activity堆栈) result = setTaskFromReuseOrCreateNewTask( taskToAffiliate next.completeResumeLocked(); } catch (Exception e) { If any exception gets thrown, toss away this activity

    34120

    Android 进阶解密笔记-插件化

    此时Activity已经可见了,但是还没出现在前台,我们还看不到,无法与Activity交互。 onRestart:restart表示重新开始,Activity在这时可见,当用户按Home键切换到桌面后又切回来或者从后一个Activity切回前一个Activity就会触发这个方法。 onCreate方法只在Activity创建时执行一次,而onStart方法在Activity的切换以及按Home键返回桌面再切回应用的过程中被多次调用。 onPause时Activity可见,onStop时Activity不可见,但Activity对象还在内存中。 ,此方法会被调用;在用户改变屏幕方向时,此方法会被调用;在当前Activity跳转到其他Activity或者按Home键回到主屏,自身退居后台时,此方法会被调用。

    26910

    相关产品

    • 人工智能

      人工智能

      提供全球领先的人脸识别、文字识别、图像识别、语音技术、NLP、人工智能服务平台等多项人工智能技术。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券