Android应用开发(二):Activity生命周期剖析以及如何启动新的Activity或网页
本文讲述组件Activity的相关知识,主要包括如何启动一个Activity、如何打开一个网页,最后解析Activity的生命周期相关知识。
1、如何启动一个Activity
(1)、新建一个Activity
要启动一个新的Activity,就必须先创建一个新的Activity,Android Studio可以直接创建Activity而不需要一行一行的敲代码,这就是前面所说的采用Android Studio平台的好处之一。
具体代码如下:
package edu.fred.hqu.androidactivity; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class AnotherAty extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_another_aty); @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_another_aty, menu); return true; @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; return super.onOptionsItemSelected(item); }
Android Studio的好处还在于,Android Studio可以在layout和AndroidManifest.xml中将新建的Activity所需要的代码自动生成,如下图所示:
(2)、加入Button
然后,我们在activity_main.xml中加入一个Button,旨在点击该按键可以进入另一个Activity,代码如下:
Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击启动一个界面" android:id="@+id/btnStartAnotherAty1" android:layout_below="@+id/textView" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /
(3)、修改MainActivity.java
接着,在MainActivity.java中加入如下代码:
/*启动另一个Activity*/ findViewById(R.id.btnStartAnotherAty1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this, AnotherAty.class));//启动另一个Activity });
(4)、编译运行
最后编译运行,结果如下图所示:
打开网页很简单,直接在MainActivity.java中加入如下代码:
/*启动另一个网页*/ findViewById(R.id.btnStartAnotherAty2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://blog.csdn.net/frd2009041510")));//启动另一个网页 });
为了观察效果,可以像之前一样加一个按键,最后给出效果图
生命周期示意图如下:
接下来,我们加入代码验证该图,加入的代码如下:
/*Activity生命周期*/ @Override protected void onStart() { super.onStart(); System.out.println("A onStart"); @Override protected void onResume() { super.onResume(); System.out.println("A onResume"); @Override protected void onPause() { super.onPause(); System.out.println("A onPause"); @Override protected void onStop() { super.onStop(); System.out.println("A onStop"); @Override protected void onDestroy() { super.onDestroy(); System.out.println("A onDestroy"); @Override protected void onRestart() { super.onRestart(); System.out.println("A onRestart"); }
在另一个Activity中加入代码如下:
/*Activity生命周期*/ @Override protected void onStart() { super.onStart(); System.out.println("B onStart"); @Override protected void onResume() { super.onResume(); System.out.println("B onResume"); @Override protected void onPause() { super.onPause(); System.out.println("B onPause"); @Override protected void onStop() { super.onStop(); System.out.println("B onStop"); @Override protected void onDestroy() { super.onDestroy(); System.out.println("B onDestroy"); @Override protected void onRestart() { super.onRestart(); System.out.println("B onRestart"); }
最后运行,查看运行日志验证结果,下面给出开始运行的一部分结果截图,执行的步骤是进入Activity,点击启动另一个Activity,结果如下图:
实验结果分析:主Activity首先启动,即A onCreate、A onStart、A onResume,点击启动另一个新的Activity后A onPause,接着B onCreate、B onStart、B onResume,最后A onStop,可以看出完全符合Activity周期图。
❤️【Android精进之路-05】怎么创建Activity,如何启动另一个Activity,干货满满,建议收藏❤️ 上一篇文章❤️【Android精进之路-04】Android核心组件Activity,必须掌握的知识点(Activity是什么,生命周期是怎样的)❤️ 介绍了Activity的基本概念以及生命周期,但是没有说到如何创建Activity,Activity之间如何传值。SO,本文将重点讲解Activity的创建以及如何Activity之间如何传递参数。
Android快速查看某个Activity的信息 Android中,如果能快速获取某个Activity的名称,我们就不用必须顺着代码逻辑,一步一步的去查找我们想查找的页面了,这就能极大的提高开发速度。
相关文章
- android scaleanimation动画,【Android动画九章】-RotateAnimation(旋转动画)和ScaleAnimation(尺寸动画)…[通俗易懂]
- android+制作开机动画,Android 开机动画制作详解
- Android浏览器直接打开网页上的文档
- Android 开机动画的制作「建议收藏」
- 代码加密 android,Android 开发怎样做代码加密或混淆「建议收藏」
- android 的hook技术,Android Native Hook技术(一)
- strictmode android,Android 应用性能优化-StrictMode(严格模式)
- android自定义View处理padding和wrap_content和自定义属性
- mac 电脑android环境变量设置,mac上Android环境变量配置[通俗易懂]
- android sdk根目录,Android SDK位置
- Android angle_android 界面悬停
- Android preference_android studio preview
- android跳转到相册需要权限,Android打开相册获取图片路径[通俗易懂]
- android调用相册并显示图片_android studio制作简易相册
- Android修改字体_android设置字体样式
- Android Spider XX兔 Wechat Cookie 校验 注册案例(二)
- android 系统浏览器 源码-Android 最最最简单的浏览器代码
- Android的TabLayout未铺满如何解决
- 【Android FFMPEG 开发】FFMPEG ANativeWindow 原生绘制 ( Java 层获取 Surface | 传递画布到本地 | 创建 ANativeWindow )
- 【错误记录】Flutter / Android 报错 ( AAPT: error: attribute android:requestLegacyExternalStorage not found )
- 【Android 进程保活】应用进程拉活 ( 账户同步拉活 | 账号添加 | 源码资源 )
- 【错误记录】Android Studio 编译报错 ( Could not find com.android.tools.build:gradle:4.2.1. )
- 【错误记录】Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | 仅做参考 | 没有解决实际问题 )
- 【Android 逆向】应用安装目录 ( Android 应用的默认安装目录 | 查找 Android 应用的安装目录 | 查询当前正在运行的应用包名 | 根据包名查询应用安装路径 )
- 【错误记录】未安装该应用 ( 在 Android 12 之后 组件设置 android:exported=“false“ 属性 )
- 【错误记录】Android 应用安全检测漏洞修复 ( StrandHogg 漏洞 | 设置 Activity 组件 android:taskAffinity=““ )
- Android开发中遇到的问题(二)——新建android工程的时候eclipse没有生成MainActivity和layout布局详解手机开发
- Google 将限制 Android 应用在后台访问地理位置数据
- 2013年上半年Android平台病毒同比增长7.96倍
- Android系统基于Linux内核,实现移动设备突破极限。(android linux内核)
- Android系统自带样式(android:theme)
- android弹出提示框的使用(图文实例)
- Android提高之模拟信号示波器的实现