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

Android:为什么它创建和活动,然后销毁它,然后再次创建,一次

Android是一种基于Linux内核的开源操作系统,主要用于移动设备和嵌入式系统。它的创建和活动、销毁、再次创建的过程是为了实现应用程序的生命周期管理和资源优化。

  1. 创建:当用户启动一个Android应用程序时,系统会创建一个新的进程,并在该进程中创建一个主活动(Main Activity)。主活动是应用程序的入口点,它负责展示用户界面和处理用户交互。同时,系统会为应用程序分配一定的内存资源和其他系统资源。
  2. 活动:在应用程序运行期间,用户可以通过与界面进行交互来执行各种操作。例如,点击按钮、滑动屏幕等。这些操作会触发系统调用相应的回调方法,如onClick()、onSwipe()等,来响应用户的操作。通过这些回调方法,开发者可以实现应用程序的各种功能和逻辑。
  3. 销毁:当用户离开应用程序或者系统需要回收资源时,系统会销毁当前的活动。销毁活动的过程包括释放内存资源、关闭网络连接、停止后台服务等。销毁活动的目的是为了释放系统资源,提高系统的性能和稳定性。
  4. 再次创建:当用户再次打开应用程序时,系统会重新创建一个新的进程,并在该进程中创建主活动。这是因为Android系统采用了进程级别的隔离机制,每个应用程序都运行在独立的进程中,以保证应用程序之间的安全性和稳定性。同时,重新创建主活动也可以保持应用程序的状态和用户的操作记录。

Android的创建和活动、销毁、再次创建的过程是为了实现应用程序的生命周期管理和资源优化。通过合理管理应用程序的生命周期,可以提高系统的性能和用户体验。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动应用开发平台:提供了一站式的移动应用开发解决方案,包括移动应用开发、测试、发布、运营等环节。详情请参考:https://cloud.tencent.com/product/madp
  • 腾讯云云服务器(CVM):提供了高性能、可扩展的云服务器,适用于各种应用场景。详情请参考:https://cloud.tencent.com/product/cvm
  • 腾讯云数据库(TencentDB):提供了多种类型的数据库服务,包括关系型数据库、NoSQL数据库等。详情请参考:https://cloud.tencent.com/product/cdb
  • 腾讯云人工智能(AI):提供了丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等。详情请参考:https://cloud.tencent.com/product/ai
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 基础面试常常吊死在这几个问题上……

Android面试常常吊死的问题 1、面试官:Context它是什么,有什么用? 2、面试官:什么是Armv7? 3、面试官:为什么字节码不能在Android中运行?...BuildType 定义了 Gradle 在构建和打包 Android 应用时使用的属性。...在 Activity 生命周期中,无论是在应用程序启动时,还是在Activity 被销毁然后重新创建(例如在配置更改期间)时,都会调用一次 onCreate() 方法。...如果有一个活动堆栈A->B-> C->D。 如果我们以启动模式为 “singleTask” 再次启动活动B ,则新的活动堆栈将为A->B。活动C和D将被摧毁。...换句话说,如果 ViewModel 的所有者因配置更改(例如,旋转)而被销毁,则不会销毁。所有者的新实例将重新连接到现有的 ViewModel 。

2K20

Android学习笔记(四)深入探讨Activity

2、Activity状态   随着Activity的创建和销毁,从栈中移进移出的过程中他们经历了如下4种可能的状态: · 活动状态:当一个Activity处于栈顶是,它是可见的、具有焦点的前台Activity...,它会经历活动生存期和可见生存期的一次或者多次重复。...对象的快速创建和销毁会导致额外的垃圾收集过程,为了保证代码高效,尽量不要创建短期对象。...在个别极端情况下,Android运行时可能会在一个Activity位于可见生存期事把终止,而不调用onStop方法。   ...当UI再次启动时,可以用onStart或者onRestart方法来恢复或者重启这些进程。   onRestart在除了对onStart方法的第一次调用之外的所有方法之前被立即调用。

1.1K100
  • 安卓入门-第二章-探究活动

    2.2.2 创建和加载布局  前面我们说过,Android程序的设计讲究逻辑和视图分离,最好每一个活动都能对应一个布局,布局就是用来显示界面内容的,因此我们现在就来手动创建一个布局文件。...2.2.6 销毁一个活动  通过上一节的学习,你已经掌握了手动创建活动的方法,并学会了如何在活动创建Toast和创建菜单。或许你现在心中会有个疑惑,如何销毁一个活动呢?  ...,它会在活动一次创建的时候调用。...活动明明已经在栈顶了,为什么再次启动的时候还要创建一个新的活动实例呢?别着急,这只是系统默认的一种启动模式而已,你完全可以根据自己的需要进行修改,比如说使用singleTop模式。...然后在FirstActivity界面再次按下Back键,这时当前的返回栈已经空了,于是就显示了另一个返回栈的栈顶活动,即SecondActivity。

    2.9K20

    Android四大组件全面解析,夯实基础。

    然后直接打开任务管理器kill掉任务 为什么onDestroy没有执行?...栈顶复用模式 有些时候,你会觉得 standard 模式有点别扭,明明已经在栈顶了,如果是相同的Activity还要在启动时创建一次,不麻烦吗。...所以singleTop 就可以解决你这个问题,如果在启动时发现返回栈的栈顶已经是当前Activity,则不会再次创建,而是直接复用。...与上面三种不同的是,指定为 singleInstance 的模式,在启动的时候会启用一个新的返回栈来管理此活动,而且只会创建一次(当然,如果你kill掉之后再启动就另当别论啦),如此一来,全局独立并唯一...为什么Android要提供 ContentProvider ,而不是直接让我们进行操作,这样不是更复杂吗?

    88930

    关于对象池的一些分析

    什么是对象池(模式) 对象池(模式)是一种创建型设计模式 持有一个初始化好的对象的集合,将对象提供给调用者。...对象池的目的 减少频繁创建和销毁对象带来的成本,实现对象的缓存和复用 什么条件下使用对象池 创建对象的成本比较大,并且创建比较频繁。比如线程的创建代价比较大,于是就有了常用的线程池。...回想起来,当时自己还很疑惑为什么要这么规定,其实很简单,使用了对象池。 调用者通过obtain方法从对象池中获取对象,然后使用完毕后,需要使用recycle方法返还给对象池。...中android.support.v4.util提供的Pools中的SynchronizedPool的实现,使用了synchronized关键字实现同步问题。...以ThreadPoolExecutor为例,提供了allowCoreThreadTimeOut和setKeepAliveTime两种方法,可以在超时后销毁核心线程。

    1.1K10

    Unity基础教程系列(三)——复用对象(Object Pools)

    创建另一个标签和滑块,复制现有的标签和滑块,将它们向下移动并重命名,这样做的速度最快。 ? (创建和销毁滑块) 然后添加一个DestructionSpeed属性,并将销毁滑块连接到。...如果你复制了创建滑块,你只需要改变的目标属性。 ? ? (销毁滑块 链接属性) 最后,添加用于跟踪销毁进程的代码。 ? 游戏现在可以同时自动创建和破坏形状。...因此,使用的内存数量会增长一段时间,直到它被系统认为占用的太多了,然后不可访问的内存会被识别出来进行回收并再次可用。如果涉及到很多内存块,这可能会导致游戏中的帧速率显著下降。...当创建和销毁以相同的速度进行时,你会看到形状将会活跃(激活)和不活跃,而不是被创建和销毁。游戏对象的总数将在一段时间后变得稳定。只有当特定形状类型的池为空时,才会创建一个新的实例。...游戏运行的时间越长,这种情况就越少发生,除非创建速度高于销毁速度。 ? (混合了活动和不活动的对象列表) 你还可以使用分析器来验证内存分配发生的频率是否大大降低。

    2.8K10

    深度剖析Android Binder IPC机制

    什么是Binder Binder是Android系统中的IPC机制,允许不同进程之间进行高效、安全的通信。Binder基于客户端-服务器模型,其中一个进程充当服务器,另一个进程充当客户端。...Binder客户端:客户端进程获取服务器进程的Binder对象引用,然后通过Binder驱动程序实现的IPC机制调用服务器进程的方法。...这对于减少创建和销毁Binder对象的开销非常有帮助。 在典型的Android应用中,创建和销毁Binder对象是一项资源密集型任务,会导致额外的开销。...为了减轻这种开销,Android引入了Binder池的概念。 Binder池的工作方式如下: Binder对象创建:在应用程序启动时,一组Binder对象被创建并注册到Binder池中。...通信完成后归还:通信结束后,客户端将Binder对象归还给Binder池,而不是销毁。 重用:下一个客户端可以再次获取相同的Binder对象引用,而不必再次创建新的Binder对象。

    47220

    Activity的生命周期

    onStart() 表示Activity正在被启动 即将开始 这是Activity已经可见 但还没出现在前台 还无法与用户交互 (4)onResume 表示Activity已经可见了 并出现在前台并已经开始活动...被系统回收后再次打开 生命周期回调过程和(1)一样 (6)从整个生命周期来说 onCreate和onDestroy是配对的 分别标识着Activity的创建和销毁并只可能有一次调用 从Activity的是否可见来说...Activity是否在前台来说 onResume和onPause是配对的随着用户操作或者设备的点亮和熄灭这两个方法可能被调用多次 当新启动一个Activity的时候旧Activity的onPause会先执行然后才会启动新的...Activity 异常情况下的生命周期分析 情况1 资源相关的系统配置发生改变导致Activity被杀死并重新创建 当系统配置发生变化后Activity会被销毁 其 onPause onStop onDestroy...Activity就可以给Activity指定configChanges属性 android:configChanges=”orientation”

    31320

    Android编程权威指南》之UI状态的保存与恢复篇

    来自lifecycle-extensions的Android Jetpack库,目前 lifecycle-extensions 中的 API 已弃用。...在设备配置改变之后,MainActivity再次访问QuizViewModel对象时,返回的是之前创建的QuizViewModel。...MainActivity和QuizViewModel经历设备旋转 运行GeoQuiz应用日志: 初次打开 旋转设备日志:(可以看出viewmodel并未重建,而是从内存中直接取第一次创建的) 旋转后...只在activity实例对象被创建后,才需要获取和保存QuizViewModel,也就是说,quizViewModel一次只赋一个值。...,这也解决不了决进程销毁问题,在开发过程中,还会遇到其他的跟生命周期有关的问题,我们得查到根本,然后多学一些知识技术点,来解决开发问题!

    61910

    探究活动Activity(2)界面跳转及生命周期

    /> 然后我们对进行修改,修改完之后如下图所示: ? 我们给它里面放了一个Buttonkong控件,并创建了标识id。...onCreate() 这个方法会在活动一次创建的时候调用,我们可以在这个方法中完成活动的初始化操作,比如加载布局、绑定事件等。 onStart() 这个方法在活动有不可见变为可见的时候调用。...onDestroy() 这个方法在活动销毁之前调用,之后的活动将变为销毁状态,此时活动处于销毁状态。...现在我们打开first_layout.xml,里面只有一个按钮,用跳转到SecondActivity的,我们再创建一个按钮,并给上标识id。...之后再按一次返回程序才会被销毁,我们从手机桌面回到这个FirstActivity的主界面会执行那些方法呢。看一下 ?

    1K20

    Art of Android Development Reading Notes 11

    Android中的主线程主要处理和界面相关的事情,而子线程则往往用于执行耗时操作。线程的创建和销毁的开销较大,所以如果一个进程要频繁地创建和销毁线程的话,都会采用线程池的方式。...2.AsyncTask对象必须在主线程中创建,execute方法必须在UI线程中调用。 3.一个AsyncTask对象只能执行一次,即只能调用一次execute方法,否则会报运行时异常。...(4)IntentService是一个继承自Service的抽象类,要使用它就要创建的子类。IntentService适合执行一些高优先级的后台任务,这样不容易被系统杀死。...11.3 Android中的线程池 (1)使用线程池的好处: 1.重用线程,避免线程的创建和销毁带来的性能开销; 2.能有效控制线程池的最大并发数,避免大量的线程之间因互相抢占系统资源而导致的阻塞现象...ThreadPoolExecutor提供了一系列参数来配置线程池,通过不同的参数可以创建不同的线程池,Android的线程池都是通过Executors提供的工厂方法得到的。

    40820

    大话企业级android读书笔记(二)

    再次显示给用户时,必须要完全重新启动和恢复到之前的状态。...所有的活动必须要实现onCreate()去做一些初始化的设置,当对象第一次实例化的时候。很多活动也会实现onPause()去提交数据修改或准备停止与用户交互。...被标记为No的方法保护活动寄宿的进程在他们调用的时候不会被杀掉。因此活动是可杀掉状态,例如onPause()返回到onResume()调用期间。直到onPause()再次返回,活动是不可杀掉的。...的邮递员:Intent Android基本设计理念是鼓励减少组件间的耦合,因此Android提供了Intent(意图),Intent提供了一种通用的消息系统,允许在你的应用程序与其它的应用程序间传递Intent...(),然后是onDestory(). android的接收员:BroadcastReceiver 广播接收者用于异步接收广播Intent 广播接收者没有界面,但是接收到消息后可以启动一个Activity

    1K50

    精选Android中高级高频面试题:四大组件及Fragment原理

    ,这是Activity生命周期中的最后一个回调,常做回收工作、资源释放; 延伸:从整个生命周期来看,onCreate和onDestroy是配对的,分别标识着Activity的创建和销毁,并且只可能有一次调用...参考回答: 不设置Activity的android:configChanges时,切屏会销毁当前Activity,然后重新加载调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次; onPause(...",经过机型测试 在Android5.1 即API 23级别下,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次Android9 即API 28级别下,切屏不会重新调用各个生命周期,只会执行...: 相同点 : 二者都继承PagerAdapter 不同点 : FragmentPagerAdapter的每个Fragment会持久的保存在FragmentManager中,只要用户可以返回到页面中,都不会被销毁...,其返回情况与START_STICKY类似,但不同的是系统会保留最后一次传入onStartCommand方法中的Intent再次保留下来并再次传入到重新创建后的Service的onStartCommand

    1.9K00

    安卓-碎片的使用入门

    虽然碎片对你来说应该是个全新的概念,但我相信你学习起来应该毫不费力,因为活动实在是太像了,同样都能包含布局,同样都有自己的生命周期。...界面也会消失,再次按下Back键,程序才会退出。...说实在的,这个问题并没有看上去那么复杂,的基本思路非常简单,首先在一个碎片中可以得到与它相关联的活动然后再通过这个活动去获取另外一个碎片的实例,这样也就实现了不同碎片之间的通信功能,因此这里我们的答案是肯定的...4.3 碎片的生命周期  和活动一样,碎片也有自己的生命周期,并且活动的生命周期实在是太像了,我相信你很快就能学会,下面我们马上就来看一下。...销毁状态 ​ 碎片总是依附于活动而存在的,因此当活动销毁时,与它相关联的碎片就会进入到销毁状态。

    1.4K20

    1.2、Activity的状态保存

    因为这个Activity对象仍然保存在内存中,的所有信息和状态仍然是存在的,当这个Activity再次返回到前台是,仍然保持着离开时候的样子。...但是对于普通用户来说,他并不知道系统销毁了Activity并重新创建,因此,可能希望该Activity保存和他离开时候一样的状态。...然后,当Activity被重新创建的时候,我们就可以通过onCreate()或者onRestoreInstanceState()方法的Bundle对象,来获得我们之前存入的数据。...注意:并不是每一次Activity销毁,系统都回去回调onSaveInstanceState()方法,我们是我们自己finish掉该Activity,那么onSaveInstanceState()方法就不会被调用...框架中的每一个widget都适当的实现了这个方法,这样任何可见的UI更改活动在重新创建时自动保存和恢复。

    85530

    16.Android-activity生命周期与启动模式

    暂停的活动是完全活动的(维护所有状态和成员信息,并保持与窗口管理器的连接),但是在内存极低的情况下,系统可能会终止。...仍然保留所有的状态和成员信息,但是,它对用户来说不再可见,所以的窗口是隐藏的,当在其他地方需要内存时,会被系统杀死。...,然后调用该方法 onStop() : 当前活动被另个活动完全覆盖后(比如有人打电话过来),那么该活动就会进入停止状态,然后调用该方法,一般在这个方法中停止所有关于刷新界面的操作. onDestroy(...5个相同的activity的话, 系统就会创建多个实例并把它们放入任务栈中,然后我们点击返回键时,当前正在显示的activity(栈顶的实例)则会出栈,然后显示之前入栈的实例,要退出的话,必须也要点击5...activity全部出栈, 然后显示当前已经创建的activity,并且会回调该实例的onNewIntent()方法。

    57510

    行情艰难,Android初中级面试题助你逆风翻盘,每题都有详细答案

    ,这是Activity生命周期中的最后一个回调,常做回收工作、资源释放; 延伸:从整个生命周期来看,onCreate和onDestroy是配对的,分别标识着Activity的创建和销毁,并且只可能有一次调用...A想要的任务栈,如果不存在,就会重新创建一个任务栈,然后创建好A的实例放到栈中; singleInstance单实例模式:这是一种加强的singleTask模式,具有此种模式的Activity只能单独地位于一个任务栈中...延伸: WindowManager为每个Window创建Surface对象,然后应用就可以通过这个Surface来绘制任何它想要绘制的东西。...不设置Activity的android:configChanges时,切屏会销毁当前Activity,然后重新加载调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次; onPause() →onStop...,其返回情况与START_STICKY类似,但不同的是系统会保留最后一次传入onStartCommand方法中的Intent再次保留下来并再次传入到重新创建后的Service的onStartCommand

    80120
    领券