首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Activity 的 36 大难点,你会几个?「建议收藏」

(除了内存紧张) killed :这个 activity 已经被销毁,其所有的状态信息和成员变量已经不存在了。...兴许的请求均不会创建新的 Activity ,除非这个独特的任务栈被系统销毁。...但是当用户主动去销毁一个 Activity 时,例如在应用中按返回键,onSaveInstanceState() 就不会被调用。...一个进程满足下面任何一个条件都被认为是可视的: 寄宿着一个不是前台的活动,但是它对用户仍可见(它的 onPause() 方法已经被调用)。...举例来说,这可能发生在,如果一个前台活动在一个对话框(其他进程的)运行之后仍然是可视的,比如输入法的弹出时。 寄宿着一个服务,该服务绑定到一个可视的活动。

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

    Activity详解

    ---- // 总结 当Activity启动时,依次会调用onCreate(),onStart(),onResume(),而当Activity退居后台时(不可见,点击Home或者被新的Activity...当Activity重新回到前台(从桌面回到原Activity或者被覆盖后又回到原Activity)时,onRestart(),onStart(),onResume()会依次被调用。...当Activity退出销毁时(点击back键),onPause(),onStop(),onDestroy()会依次被调用,到此Activity的整个生命周期方法回调完成。...当然从流程图,我们也可以看出当Activity停止后(onPause方法和onStop方法被调用),重新回到前台时也会调用onResume方法,因此我们也可以在onResume方法中初始化一些资源,比如重新初始化在...Paused // Paused 当Activity失去焦点时,或被一个新的非全屏的Activity,或被一个透明的Activity放置在栈顶时,Activity就转化为Paused状态。

    1.1K30

    Android知识笔记:Android 仿iOS 侧滑关闭Activity框架透底问题

    (感觉闪一下) 概率出现当前Activity整个页面为透明,屏幕显示的是上一个界面的Activity,但是当前Activity并没有销毁,并且可以交互 这个是比较严重的用户体验问题,特别在小米手机上会特别明显...Activity为非透明主题,在Activity恢复到前台被点击时替换为透明主题; 如何动态修改Activity Theme?...(0, 0); intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); finish(); overridePendingTransition...setTheme(),然后调用recreate(),重新创建一个activity,并且销毁上一个activity; 所以这个方案并不可行,整个界面必须销毁重建。...3.如何从根源思考、解决问题 最后我想说:对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

    1.4K10

    2014-11-6Android学习------activity切换特效--------动画Animation学习篇

    switch (mAnimSp.getSelectedItemPosition()) { case 0: /*注意:此方法只能在startActivity和finish方法之后调用...第一个参数为第一个Activity离开时的动画,第二参数为所进入的Activity的动画效果*/ overridePendingTransition(R.anim.fade, R.anim.hold...: switch (mAnimSp.getSelectedItemPosition()) { case 0: /*注意:此方法只能在startActivity和finish方法之后调用...第一个参数为第一个Activity离开时的动画,第二参数为所进入的Activity的动画效果*/ overridePendingTransition(R.anim.fade, R.anim.hold...类中,当返回键被触发的时候:又设定一种退出的效果 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { //如果按下的是返回键

    37620

    前面的注解处理器教程涉及到的 Tieguanyi 框架现在怎么样了?

    状态保存 在一些特定的场景下,例如转屏时, Activity 或者 Fragment 会被销毁并重新创建,销毁前会调用 onSaveInstanceState 来保存状态。...我们都会在相应的方法当中调用 overridePendingTransition 来设置这些转场动画。...UserActivity 的实例因各种原因(例如开发者选项中的”不保留活动“开启时)被销毁,从 EditUserActivity 返回时, UserActivity 被重新创建,导致之间的回调(匿名内部类...为了解决这个问题,我会在页面返回,上一个页面被重新创建时尝试替换掉失效的实例以保证回调可以正常使用,其中主要包括: 外部 Activity 的实例,这个通常没有问题。...项目如何接入? 仓库配置: repositories { ...

    60610

    Android经典面试题之如何设置activity的启动动画,让它像dialog一样从底部往上出来

    启动新的 Activity 时 在启动一个新的 Activity 时你可以这样使用: val intent = Intent(this, NewActivity::class.java) startActivity...时 在结束当前 Activity 时你需要在 finish 之前调用 overridePendingTransition: finish() overridePendingTransition(R.anim.activity_slide_in...如何只让新启动的activity有动画效果,之前的activity不动 先定义一个静止的动画 res/anim/no_animation.xml 时 val intent = Intent(this, NewActivity::class.java) startActivity(intent) overridePendingTransition...(R.anim.activity_slide_in, R.anim.no_animation) 在新的 Activity 返回时,也不需要动画 在新的 Activity 中,确保返回时无动画: override

    17110

    关于 Android 实现滑动返回的几种方法总结

    向右滑动销毁(finish)Activity。...注意:由于设置为了全透明,所以当我使用 4.0.3 版本进行开发的时候,由于活动默认的是白色的,所以当我继承这个类时,运行后的结果效果不太好,在新建的活动中能看见上一个活动的布局,这个体验感非常差,在后面的调试中...,发现只要把新建的活动设置一个其他颜色的背景就行了,比如我设置为了 gray,这样就没有了那个 BUG。...对于我们要如何实现滑动返回,我们首先需要建一个 Activity 的管理类 AppManager,这样方便我们对 Activity 的生命周期进行管理,并安全退出,所以我们需要在主活动里对每启动一个 Activity...MainActivity 类 //启动活动时,添加到AppManager,并设置返回时的动画 public void startActivity(Class<?

    5.1K90

    Activity生命周期1

    生命周期 活动在系统中被活动堆栈管理。当一个新的活动开始时,将会强加于堆栈的顶端并成为运行活动状态。...onStart() onRestart() 当Activity被展示在用户眼前时调用。如果活动出现在前台紧接着是onResume(),如果活动直接隐藏则紧接着是onStop()。 该方法也不常用。...onResume or onStop() onStop() 当另一个活动被恢复且完全覆盖该活动,而该Activity将不在展示给用户时调用。...这种情况将发生在一个新的活动将被开始,一个退出的活动将被恢复,又或者该活动将要被销毁。如果该活动将恢复与用户交互则调用onRestart(),如果该活动将被销毁则调用onDestory()。...onRestart() or onResume() onDestory() Activity被销毁时,最后一个被调用的方法。

    61610

    执行上下文

    执行上下文的内容 变量对象 活动对象 作用域链 调用者信息 4.执行上下文的生命周期 创建阶段 执行阶段 销毁阶段 执行上下文概念 执行上下文为我们的可执行代码块提供了执行前的必要准备工作,如变量对象的定义...,变量对象(VO)被激活为活动对象(AO)时,才能访问到其中的属性和方法 活动对象(activation 简称AO) 函数进入执行阶段时,原本不能访问的变量对象被激活成为一个活动对象,这样才可以访问到其中的属性...其实变量对象和活动对象是一个东西,只不过处于不同的状态和阶段 作用域链 作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限,当查找变量时,会先从当前上下文的变量对象中查找,如果没有找到,就从父级执行上下文的变量中查找...函数的作用域在函数创建时就已经确定了,当函数创建时,会有一个名为[[scope]]的内部属性保存所有父级变量在其中。...3.销毁阶段 一般来讲当函数执行完成后,当前执行上下文会被弹出执行上下文栈并且销毁,控制权被重新交给执行栈上一层的执行上下文。

    94610

    超详细,Android AMS面试攻略,带你突破面试难关

    终止应用程序: 当用户退出应用程序时,AMS会依次调用应用程序各个组件的生命周期方法,并将其销毁。如果应用程序进程不再有任何活动组件在运行,AMS可能会结束该进程以释放资源。...任务栈是一个后进先出(LIFO)的堆栈结构,其中存储着应用程序启动的各个活动的实例。当一个新的活动启动时,它会被推入任务栈的顶部;当用户按下Back键或者活动被销毁时,该活动会被从任务栈中弹出。...具体来说,AMS通过以下几个步骤来管理任务栈: 任务栈创建与销毁: 当用户启动一个新应用程序时,AMS会创建一个新的任务栈,并将该应用程序的启动Activity压入该任务栈;当应用程序的所有活动都被销毁时...当一个新的Activity启动时,它会被压入任务栈的栈顶;当用户按下返回键时,该Activity会被弹出栈顶。...通常情况下,系统会保持至少一个前台进程,以确保用户体验;当系统内存不足时,AMS会优先杀死后台进程,以释放内存资源。 其它 问题: Android中的内存管理机制是怎样的?AMS是如何参与其中的?

    74010

    简述Activity生命周期「建议收藏」

    新活动启动进入栈,处于栈顶,当Back或finish()销毁一个活动时,栈顶的活动会出栈,前一个入栈的活动重新处于栈顶位置,显示给用户。 活动状态 运行状态:处于栈顶。...(系统会保存相应的状态和成员变量,但是这并不是完全可靠的,当其他地方需要内存时,处于停止状态的活动有可能会被系统回收) 销毁状态:系统从返回栈中移除后进入销毁状态。...onPause()在系统准备启动或者恢复另一个活动时被调用。作用:消耗CPU的资源释放掉,保存一些关键数据,此方法速度一定要快,不然会影响新的栈顶活动使用。 onStop()活动完全不可见时调用。...onDestroy()在活动被销毁之前调用。作用:会完成释放内存的操做。...onDestroy()之后活动的状态将便会销毁状态, onRestart()在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。

    25110

    Android基础总结(2)——活动Activity

    ,但是不完全可靠,当其他地方需要内存时,有可能被回收。...销毁状态:当一个活动从回收栈中移除后就变成了销毁状态。 Activity生命周期图 ?...activity的七个回调方法 onCreate():当Activity第一次被实例化的时候系统会调用,整个生命周期只调用1次这个方法。...onStart():当Activity可见未获得用户焦点不能交互时系统会调用。由不可见变为可见时调用。 onRestart():当Activity已经停止然后重新被启动时系统会调用。...onDestroy():当Activity(用户调用finish()或系统由于内存不足)被系统销毁杀掉时系统调用,(整个生命周期只调用1次)用来释放onCreate()方法中创建的资源,如结束线程等。

    1.2K90

    JavaScript中的闭包(closure)

    当第一次调用compare()时,会创建一个包含this、arguments、valuel和value2的活动对象。...当调用compare()函数时,会为函数创建一个执行环境,然后通过复制函数的[[Scope]]属性中的对象构建起执行环境的作用域链。...无论什么时候在函数中访问一个变量时,就会从作用域链中搜索具有相应名字的变量。一般来讲,当函数执行完毕后,局部活动对象就会被销毁,内存中仅保存全局作用域(全局执行环境的变量对象)。...换句话说,当createComparisonFunction()函数返回后,其执行环境的作用域链会被销毁,但它的活动对象仍然会留在内存中;直到匿名函数被销毁后,createComparisonFunction...随着匿名函数的作用域链被销毁,其他作用域 (除r全局作用域)也都可以安全地销毁了。图 展示了调用conpareNamesO的过程中产生的作用域链之间的关系。 ?

    1.1K20

    ​Activity的生命周期【建议收藏】

    Acivity,处于栈顶的Activity就会出栈,前一个入栈的Activity就会重新处于栈顶的位置, Activity的四种状态 1、 运行状态:当一个活动位于返回栈的栈顶时,这是活动就处于运行状态...; 2、 暂停状态:当一个活动不处于栈顶时,但是仍然可见时,这是活动就进入了暂停状态; 3、 停止状态:当一个活动不再处于栈顶状态,并且完全不可见的时候,就进入了停止状态; 4、 销毁状态:当一个活动从返回栈中移除后就变成了销毁状态...Activity的生命周期 中的状态 (大前端之旅) Activity的生存期 1、 onCreate():每个活动都会重写这个方法,它是活动在第一次被创建的时候调用,你应该在这个方法中完成活动的初始化操作...,此时的活动一定位于返回栈的栈顶,并处于运行状态,也就是恢复被Pause(暂停)的Activity;; 4、 onPause():这个方法在系统准备去启动或者恢复另一个活动的时候调用,通常会在这个方法中将一些消耗...6、 onDestroy():这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态,也就是终止Activity, 转换为非活动状态; 7、 onRestart():这个方法在活动由停止状态变为运行状态之前调用

    51920

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

    调用onStop方法做后续处理。 调用onDestroy方法销毁当前活动。 重新onCreate该活动。 调用onStart方法之后,再调用onRestoreInstance方法加载保存的数据。...注意: onSaveInstanceState和onRestoreInstanceState调用时机: 当某个activity变得“容易”被系统销毁时,该activity的onSaveInstanceState...言下之意就是该activity还没有被销毁,而仅仅是一种可能性。这种可能性有哪些?有这么几种情况: 当用户按下HOME键时。...总而言之,onSaveInstanceState的调用遵循一个重要原则,即当系统“未经你许可”时销毁了你的activity,则onSaveInstanceState会被系统调用,这是系统的责任,因为它必须要提供一个机会让你保存你的数据...被调用的前提是,activity A“确实”被系统销毁了,而如果仅仅是停留在有这种可能性的情况下,则该方法不会被调用,例如,当正在显示activity A的时候,用户按下HOME键回到主界面,然后用户紧接着又返回到

    1K20

    Android入门教程之Activity(生命周期,启动...)

    onStart()方法:活动由不可见到可见的时候被调用,表示Activity正在启动,此时Activity可见但不在前台。 onResume()方法:活动准备好和用户进行交互时调用。...onDestory()方法:在活动被销毁之前调用,表示Activity即将销毁,常做回收工作、资源释放。 onRestart()方法:在活动由停止状态变为运行状态之前调用。...当异常终止的 Activity 被重建时,会调用 onRestoreInstanceState 方法(该方法在 onStart 之后),并且把 Activity 销毁时 onSaveInstanceState...谈谈横竖屏切换过程中调用的函数 要切记这里活动已经被销毁了。...如何防止横竖屏切换(配置改变)时Activity销毁并切换 通过对AndroidManifest文件的Activity中指定(configChanges)属性: android:configChanges

    1.1K00

    Android开发:实现滑动退出 Fragment + Activity 二合一

    2、支持左、右、左&右滑动(未来可能会增加更多滑动区域) 3、支持Scroll中的滑动监听 4、帮你处理了app被系统强杀后引起的Fragment重叠的情况 效果 [937851-95b4107750f8a8aa.gif...add还是replace,Fragment对象都会被FragmentManager保存在内存中,即使app在后台因系统资源不足被强杀,FragmentManager也会为你保存Fragment,当重启app...当我们拖拽时,上个Fragment A的View是GONE状态,所以我们要做的就是当判断拖拽发生时,Fragment A的View设置为VISIBLE状态,这样拖拽的时候,上个Fragment A就被完好的显示出来了...对于Activity这项工作很简单:Activity.overridePendingTransition(0, 0)即可。...时,PreFragment的视图会是GONE状态;如果你非要调用show的话,请按下面的方式处理:(没必要的话,还是不要调用show了,下面的代码可能会产生闪烁) @Overridepublic void

    99030
    领券