Android应用开发(二):Activity生命周期剖析以及如何启动新的Activity或网页

简介: <p></p> <p>本文讲述组件<span style="font-family:Times New Roman">Activity</span><span style="font-family:宋体">的相关知识,主要包括如何启动一个</span><span style="font-family:Times New Roman">Activity</span><span style=

本文讲述组件Activity的相关知识,主要包括如何启动一个Activity、如何打开一个网页,最后解析Activity的生命周期相关知识。


1、如何启动一个Activity


1)、新建一个Activity

要启动一个新的Activity,就必须先创建一个新的ActivityAndroid 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可以在layoutAndroidManifest.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)、编译运行

最后编译运行,结果如下图所示:



2、如何打开一个网页


打开网页很简单,直接在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")));//启动另一个网页

    }
});

为了观察效果,可以像之前一样加一个按键,最后给出效果图





3Activity的生命周期


生命周期示意图如下:


接下来,我们加入代码验证该图,加入的代码如下:

/*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周期图。




目录
相关文章
|
8天前
|
存储 Java 开发工具
探索安卓应用开发:从新手到专家的旅程
【8月更文挑战第30天】在数字时代,掌握安卓应用开发的技能不仅是职业发展的利器,也是个人技术成长的象征。本文将带你了解如何从零基础开始,逐步深入安卓开发的奥秘,最终成为一名能够独立开发高质量应用的专家。通过实际的代码示例和清晰的步骤指导,我们将一起构建你的第一个安卓应用程序,并探讨如何提升至更高水平。无论你是编程新手还是希望提高现有技能的开发者,这篇文章都将为你提供宝贵的知识和启发。
|
9天前
|
设计模式 Java Android开发
探索安卓应用开发:从新手到专家的旅程探索iOS开发中的SwiftUI框架
【8月更文挑战第29天】本文旨在通过一个易于理解的旅程比喻,带领读者深入探讨安卓应用开发的各个方面。我们将从基础概念入手,逐步过渡到高级技术,最后讨论如何维护和推广你的应用。无论你是编程新手还是有经验的开发者,这篇文章都将为你提供有价值的见解和实用的代码示例。让我们一起开始这段激动人心的旅程吧!
|
9天前
|
人工智能 缓存 数据库
安卓应用开发中的性能优化技巧AI在医疗诊断中的应用
【8月更文挑战第29天】在安卓开发的广阔天地里,性能优化是提升用户体验、确保应用流畅运行的关键所在。本文将深入浅出地探讨如何通过代码优化、资源管理和异步处理等技术手段,有效提升安卓应用的性能表现。无论你是初学者还是资深开发者,这些实用的技巧都将为你的安卓开发之路增添光彩。
|
6天前
|
存储 XML 前端开发
探索Android应用开发:从基础到进阶
【8月更文挑战第31天】在这篇文章中,我们将深入探讨Android应用开发的奥秘。无论你是新手还是有经验的开发者,本文都将为你提供有价值的见解和技巧。我们将从基本的UI设计开始,逐步介绍数据存储、网络请求等高级主题,并展示一些实用的代码示例。让我们一起踏上这段激动人心的旅程吧!
|
7天前
|
缓存 Android开发 UED
安卓应用开发中的性能优化实践
【8月更文挑战第31天】在安卓的世界里,性能是王道。本文将带你深入理解如何通过代码优化和工具使用来提升你的安卓应用性能。我们将一起探索内存管理、布局优化、多线程处理等关键领域,并配以实用的代码示例,让你的应用飞一般地运行起来!
|
7天前
|
Java Android开发 开发者
探索安卓应用开发:从基础到实践
【8月更文挑战第31天】在这篇文章中,我们将一起踏上安卓应用开发的旅程。无论你是初学者还是有一定经验的开发者,这里都有适合你的内容。文章将引导你理解安卓开发的基础知识,然后通过实际的代码示例,带你一步步构建一个简单的应用程序。我们的目标是让读者能够不仅理解安卓开发的理论基础,还能通过动手实践来巩固这些知识。所以,拿起你的设备,让我们一起开始吧!
|
7天前
|
移动开发 Java Android开发
探索安卓应用开发的新趋势:Kotlin与Coroutines
【8月更文挑战第31天】本文旨在为读者揭示安卓开发中的最新潮流,特别是Kotlin语言及其协程特性如何重塑移动应用的构建方式。我们将通过实际代码示例深入理解Kotlin简洁语法背后的强大功能,并探讨如何利用Coroutines优雅地处理异步任务,从而提升应用性能和用户体验。无论你是安卓开发的新手还是资深开发者,这篇文章都将为你带来新的启示和灵感。
|
3天前
|
存储 Android开发 开发者
探索安卓开发之旅:从新手到专家的必经之路
【9月更文挑战第3天】在这篇文章中,我们将踏上一场激动人心的旅程,深入探索安卓开发的广阔天地。无论你是初涉编程世界的新手,还是期望提升技能的开发者,这里都有你需要的知识与技巧。我们将从基础概念讲起,逐步引导你了解安卓应用的核心组件,并分享实用的开发建议。准备好了吗?让我们一起开启这段成长之旅吧!