开发者社区> 方瑞东> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Android开发】 ListView使用实战详解,你get到了嘛?
【Android开发】 ListView使用实战详解,你get到了嘛?
53 0
【Android 应用开发】Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片
【Android 应用开发】Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片
87 0
Android开发之ListView使用经验分享
在Android开发中,ListView是使用最广泛的组件之一,虽然谷歌推出了RecycleView,但是很多项目中依旧在使用ListView,本文将总结一下使用过程中遇到的一些问题,与大家共勉~~~ 一、ListView 与 Adapter List...
760 0
Android开发重要参考资料
=======================博客============================= 秋百万 有心课堂 郭霖 源码 安装ffmpeg 胡凯 官方培训课程 litesuitsway 爱哥 trinea robinRobin Hu...
826 0
+关注
方瑞东
关注视频处理,如视频编码、视频云服务等。
158
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载