Android 应用基础技术5_第1页
Android 应用基础技术5_第2页
Android 应用基础技术5_第3页
Android 应用基础技术5_第4页
Android 应用基础技术5_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章深入分析Activity在Android应用程序中,Activity承担了非常重要的功能,它代表应用程序与用户交互的界面。当Android平台要运行一个Android应用程序时,它会启动一个指定的Activity运行,通过用户与Activity的交互,实现界面之间的跳转,并进而完成程序的功能目标。本章对Activity的相关内容进行介绍。目录4.1Activity生命周期4.2Activity生命周期观察4.3使用Log类输出程序调试信息4.4Android常见Activity4.5课后同步练习4.1Activity生命周期JavaSE桌面应用程序场景,这些程序都会有一个称为main()的函数,它是整个程序运行的入口。但是,在Android应用程序中,就像之前编写的任何程序Android应用程序,程序中并不存在main()函数。packagecom.example.ch0401;

importandroid.os.Bundle;

importandroidx.activity.EdgeToEdge;importandroidx.appcompat.app.AppCompatActivity;importandroidx.core.graphics.Insets;importandroidx.core.view.ViewCompat;importandroidx.core.view.WindowInsetsCompat;

publicclassMainActivityextendsAppCompatActivity{

@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_main);ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main),(v,insets)->{InsetssystemBars=insets.getInsets(WindowInsetsCompat.Type.systemBars());v.setPadding(systemBars.left,systemBars.top,systemBars.right,systemBars.bottom);returninsets;});}}问题是,没有main()函数,Android程序又是如何运行的呢?这就需要理解Android程序生命周期的概念。一个应用程序也是有生命周期的:启动程序→完成业务功能→程序运行结束。Android应用程序的Activity界面,它也是有生命周期的:Android平台为显示Activity界面做准备→显示Activity界面→用户与界面交互→退出Activity界面。其实,Android的一个Activity的生命周期要比上面所描述的复杂和细致得多,并且,Android应用程序的生命周期是由Android平台管理的。当Android系统要启动一个应用程序的Activity时,例如,启动某个Android应用程序的入口Activity时,它将首先调用该Activity的onCreate()方法,然后调用该Activity的onStart()方法,接着调用Activity的onResume()方法,在调用了onResume()方法之后,该Activity已经将所表示的界面显示在屏幕上,此时,用户可以与此Activity进行交互,例如对于微信应用,则可以与好友进行微信聊天了。当一个应用程序的Activity显示在屏幕上时,随时都有可能被另外一个Activity覆盖。例如,当进行微信聊天时,可能突然会收到一条短信,这时,可以在继续微信聊天的同时,打开短信应用程序来阅读收到的短信,此时,微信聊天程序的Activity被短信应用的Activity覆盖。在这种情况下,Android系统会自动调用微信聊天程序Activity的onPause()方法,然后再调用短信程序的入口Activity的onCreate()方法、onStart()方法、onResume()方法,此时,就可以查看短信了;如果微信聊天程序的Activity界面被完全覆盖,则还会调用微信聊天程序Activity的onStop()方法。当阅读完短信,并关闭短信程序后,Android会根据微信聊天程序Activity被覆盖的情况(部分或完全被短信界面覆盖),自动调用微信聊天程序Activity的onResume()方法,或先调用onRestart()方法,再调用onStart()方法,并继续调用onResume()方法,将微信聊天程序的Activity在屏幕上显示出来,这时,微信聊天程序Activity的界面又显示在屏幕上了。当用户关闭一个Activity,也就是在程序界面上点击返回按钮,或者调用Activity的finish()方法时,Android会自动顺序调用该Activity的onPause()→onStop()→onDestroy()来结束Activity。4.2Activity生命周期观察packagecom.example.ch0401;

importandroid.os.Bundle;importandroidx.activity.EdgeToEdge;importandroidx.appcompat.app.AppCompatActivity;importandroidx.core.graphics.Insets;importandroidx.core.view.ViewCompat;importandroidx.core.view.WindowInsetsCompat;

publicclassMainActivityextendsAppCompatActivity{

@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_main);ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main),(v,insets)->{InsetssystemBars=insets.getInsets(WindowInsetsCompat.Type.systemBars());v.setPadding(systemBars.left,systemBars.top,systemBars.right,systemBars.bottom);returninsets;});System.out.println("onCreate()called");}@OverrideprotectedvoidonStart(){super.onStart();System.out.println("onStart()called");}

@OverrideprotectedvoidonResume(){super.onResume();System.out.println("onResume()called");}

@OverrideprotectedvoidonPause(){super.onPause();System.out.println("onPause()called");}

@OverrideprotectedvoidonStop(){super.onStop();System.out.println("onStop()called");}

@OverrideprotectedvoidonRestart(){super.onRestart();System.out.println("onRestart()called");}

@OverrideprotectedvoidonDestroy(){super.onDestroy();System.out.println("onDestroy()called");}}4.3使用Log类输出程序调试信息在Android程序中更常用的方式是使用Log类输出信息。使用Log类输出的信息可以使用Android的“adblogcat”命令在控制台查看程序输出的信息。packagecom.example.ch0401;

importandroid.os.Bundle;importandroid.util.Log;

importandroidx.activity.EdgeToEdge;importandroidx.appcompat.app.AppCompatActivity;importandroidx.core.graphics.Insets;importandroidx.core.view.ViewCompat;importandroidx.core.view.WindowInsetsCompat;

publicclassMainActivityextendsAppCompatActivity{privatestaticStringTAG="我的调试信息";

@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_main);ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main),(v,insets)->{InsetssystemBars=insets.getInsets(WindowInsetsCompat.Type.systemBars());v.setPadding(systemBars.left,systemBars.top,systemBars.right,systemBars.bottom);returninsets;});//System.out.println("onCreate()called");Log.i(TAG,"onCreate()called");}

@OverrideprotectedvoidonStart(){super.onStart();//System.out.println("onStart()called");Log.i(TAG,"onStart()called");}

@OverrideprotectedvoidonResume(){super.onResume();//System.out.println("onResume()called");Log.i(TAG,"onResume()called");}@OverrideprotectedvoidonPause(){super.onPause();//System.out.println("onPause()called");Log.i(TAG,"onPause()called");}

@OverrideprotectedvoidonStop(){super.onStop();//System.out.println("onStop()called");Log.i(TAG,"onStop()called");}

@OverrideprotectedvoidonRestart(){super.onRestart();//System.out.println("onRestart()called");Log.i(TAG,"onRestart()called");}

@OverrideprotectedvoidonDestroy(){super.onDestroy();//System.out.println("onDestroy()called");Log.i(TAG,"onDestroy()cal

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论