Android活动生命周期-所有这些方法是为了什么?

Android活动生命周期-所有这些方法是为了什么?

Android活动的生命周期是什么?为什么这么多类似的探测方法onCreate()onStart()onResume())在初始化期间调用,还有许多其他(onPause()onStop()onDestroy())在结尾打电话?

何时调用这些方法,以及如何正确地使用这些方法?


慕标5832272
浏览 527回答 4
4回答

翻过高山走不出你

把它看进去活动生命周期(针对Android开发者)。onCreate():第一次创建活动时调用。这是您应该做所有常规静态设置的地方:创建视图、将数据绑定到列表等。此方法还为您提供了一个包含活动先前冻结状态(如果存在的话)的绑定。总是后面跟着onStart()。onRestart():在活动停止后调用,然后再重新启动。总是后面跟着onStart()onStart():当活动对用户变得可见时调用。如果活动到达前台,则后面跟着onResume()。onResume():当活动开始与用户交互时调用。此时,您的活动位于活动堆栈的顶部,用户输入到它。总是跟在onPace()后面。昂帕斯():作为活动生命周期的一部分,当活动进入后台时调用,但尚未(尚未)终止。onResume()的对应项。当ActivityB在活动A前面启动时,将在A.B上调用此回调,直到A的onPace()返回时才会创建该回调,因此请确保这里不要做任何冗长的操作。onStop():当您不再对用户可见时调用。接下来您将接收onRestart()、onDesty()或Nothing,这取决于以后的用户活动。请注意,在内存不足的情况下,这个方法可能永远不会被调用,因为系统没有足够的内存来使您的活动的进程在其onPace()方法被调用之后继续运行。onDesty():在您的活动被破坏之前收到的最后一个电话。这可能是因为活动正在完成(有人在其上调用Finish(),或者因为系统正在临时销毁该活动的这个实例以节省空间。您可以使用isFinming()方法区分>这两种场景。当活动第一次载荷这些活动的名称如下:onCreate()onStart()onResume()当你点击电话按钮活动将转到后台,以下事件称为:onPause()onStop()退出电话拨号以下活动将称为:onRestart()onStart()onResume()当您单击后按钮或者试图完成()这些活动的名称如下:onPause()onStop()onDestroy()活动国Android操作系统使用优先级队列来帮助管理设备上运行的活动。基于特定Android活动所处的状态,将在操作系统中为其指定一定的优先级。这个优先级系统帮助Android识别不再使用的活动,从而使操作系统能够回收内存和资源。下图说明了一个活动在其生命周期内可以经历的状态:这些州可分为以下三大类:活动或运行-活动被认为是活动的或运行的,如果它们在前台,也称为活动堆栈的顶部。这被认为是Android活动堆栈中的最高优先级活动,因此只有在极端情况下才会被操作系统杀死,比如如果该活动试图使用比设备上可用的内存更多的内存,因为这可能导致UI变得没有响应。停顿-当设备进入睡眠状态,或者某个活动仍然可见,但被新的、非完全大小或透明的活动部分隐藏时,该活动被视为暂停。暂停的活动仍然存在,也就是说,它们维护所有的状态和成员信息,并保持与窗口管理器的连接。这被认为是Android活动堆栈中第二高优先级的活动,因此,只有在杀死该活动将满足保持活动/运行活动稳定和响应所需的资源需求时,操作系统才会终止该活动。停住-被另一项活动完全掩盖的活动被视为停止或处于背景中。已停止的活动仍然试图尽可能长时间保留其状态和成员信息,但停止的活动被认为是三种状态中的最低优先级,因此OS将首先杀死该状态中的活动,以满足高优先级活动的资源需求。*了解生命周期的样本活动*import android.app.Activity;import android.os.Bundle;import android.util.Log;public class MainActivity extends Activity {     String tag = "LifeCycleEvents";     /** Called when the activity is first created. */     @Override     public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        Log.d(tag, "In the onCreate() event");     }     public void onStart()     {        super.onStart();        Log.d(tag, "In the onStart() event");     }     public void onRestart()     {        super.onRestart();        Log.d(tag, "In the onRestart() event");     }     public void onResume()     {        super.onResume();        Log.d(tag, "In the onResume() event");     }     public void onPause()     {        super.onPause();        Log.d(tag, "In the onPause() event");     }     public void onStop()     {        super.onStop();        Log.d(tag, "In the onStop() event");     }     public void onDestroy()     {        super.onDestroy();        Log.d(tag, "In the onDestroy() event");     }}

泛舟湖上清波郎朗

整个混乱是因为谷歌选择了非直观的名称,而不是如下所示:onCreateAndPrepareToDisplay()   [instead of onCreate() ]onPrepareToDisplay()            [instead of onRestart() ]onVisible()                     [instead of onStart() ]onBeginInteraction()            [instead of onResume() ]onPauseInteraction()            [instead of onPause() ]onInvisible()                   [instead of onStop]onDestroy()                     [no change] 

慕哥6287543

活动有六种状态创造开始恢复停顿停住被毁活动生命周期有七种方法onCreate()onStart()onResume()onPause()onStop()onRestart()onDestroy()情况打开应用程序时onCreate() --> onStart() -->  onResume()当按下“后退”按钮并退出应用程序时onPaused() -- > onStop() --> onDestory()按家庭按钮时onPaused() --> onStop()按下主页按钮后,再次从最近的任务列表中打开应用程序或点击图标。onRestart() --> onStart() --> onResume()当从通知栏或打开设置打开另一个应用程序时onPaused() --> onStop()从另一个应用程序或设置中按下的“后退”按钮可以看到我们的应用程序。onRestart() --> onStart() --> onResume()当任何对话框在屏幕上打开时onPause()在关闭对话框或对话框中的后退按钮后onResume()任何手机都在响,用户在这个应用程序中。onPause() --> onResume()当用户按下电话的应答按钮时onPause()呼叫结束后onResume()当手机屏幕关闭时onPaused() --> onStop()当屏幕打开时onRestart() --> onStart() --> onResume()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android
Java