Activity的生命周期

1.回调方法

回调方法作用说明
onCreate()表示Activity正在被创建Activity 被创建时调用。一般在这个方法中进行活动的初始化工作,如设置布局工作、加载数据、绑定控件等。
onRestart()表示Activity正在重新启动这个回调代表了 Activity 由完全不可见重新变为可见的过程,当 Activity 经历了 onStop() 回调变为完全不可见后,如果用户返回原 Activity,便会触发该回调,并且紧接着会触发 onStart() 来使活动重新可见。
onStart()启动Activity经历该回调后,Activity 由不可见变为可见,但此时处于后台可见,还不能和用户进行交互
onResume()Activity已经可见已经可见的 Activity 从后台来到前台,可以和用户进行交互。
onPause()Activity正在停止当用户启动了新的 Activity ,原来的 Activity 不再处于前台,也无法与用户进行交互,并且紧接着就会调用 onStop() 方法,但如果用户这时立刻按返回键回到原 Activity ,就会调用 onResume() 方法让活动重新回到前台。而且在官方文档中给出了说明,不允许在 onPause() 方法中执行耗时操作,因为这会影响到新 Activity 的启动。
onStop()Activity即将停止这个回调代表了 Activity 由可见变为完全不可见,在这里可以进行一些稍微重量级的操作。需要注意的是,处于 onPause() 和 onStop() 回调后的 Activity 优先级很低,当有优先级更高的应用需要内存时,该应用就会被杀死,那么当再次返回原 Activity 的时候,会重新调用 Activity 的onCreate()方法。
onDestroy()Activity即将被销毁来到了这个回调,说明 Activity 即将被销毁,应该将资源的回收和释放工作在该方法中执行。

2. 配置Activity

  • 创建Activity后,还需要在Android应用的配置文件AndroidManifest.xml中进行配置
  • 配置方法:在< application>…< /application>元素中,添加< activity>…< /activity>子元素即可进行配置Activity。
  • 配置内容
    配置Activity时通常指定如下属性和元素:
name:指定该Activity实现类的类名,需要指定路径(相对路径是.类名,绝对路径是:包名.类名)。
icon:为该Activity指定图标。
label:为该Activty指定标签。
< intent-filter>…</ intent-filter>:该元素用于为该Activity指定可响应的Intent(意图)

3. 启动Activity

一个Android应用通常都会包含多个Activity。当一个Android应用只包含一个Activity时,这个Activity就会作为程序的入口,该Android应用运行时将会自动启动,并运行该Activity。如果一个Android应用包含了多个Activity时,通常都由入口Activity启动,或由入口Activity启动的Activity来启动其他的Activity

Activity启动其他Activity的两个方法

  • startActivity(Intent intent):启动其他Activity。
  • startActivityForResult(Intent intent,int requestCode):用指定的请求码启动另一个Activity,并且请求返回所需要的数据。(在当前的Activity中需要通过重写onActivityRequest()方法来获取需要的数据,并进行相应的处理。)

4. 关闭Activity

关闭Activity的两个方法:

  • finish():关闭当前的Activity。如果当前的Activity不是主活动,那么执行finish()方法后,将返回到调用它的那个Activity。否则,将返回到主屏幕中
  • finishActivity (int requestCode):结束以startActivityForResult(Intent intent,intrequestCode)方法启动的 Activity。

5. Intent
Activity程序之间就需要进行通信,这个通信就要依靠Intent来完成,所以Intent常常被称为“信使”。
例子:

main_xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="详情信息"
        android:id="@+id/show"/>
</LinearLayout>
detail.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_margin="20dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="显示详细内容:嗨,你好!"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/close"
        android:layout_marginTop="10dp"
        android:text="关闭"/>

</LinearLayout>

DetailActivity.java
package com.example.a6_1;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class DetailActivity extends Activity {
    private String tag="B";
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.detail);
        Log.i(tag,"调用了onCreate()方法");
        Button close =(Button) findViewById(R.id.close);
        close.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i(tag,"调用Destroy()方法");
    }
    protected void onPause() {
        super.onPause();
        Log.i(tag, "调用onPause()方法");
    }
    protected void onRestart() {
        super.onRestart();
        Log.i(tag, "调用onRestart()方法");
    }
    protected void onResume() {
        super.onResume();
        Log.i(tag, "调用onResume()方法");
    }
    protected void onStart() {
        super.onStart();
        Log.i(tag, "调用onStart()方法");
    }
    protected void onStop() {
        super.onStop();
        Log.i(tag, "调用onStop()方法");
    }

}

MainActivity.java
package com.example.a6_1;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    private String tag="A";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i(tag,"调用了onCreate()方法");
        setContentView(R.layout.activity_main);
        Button show=(Button) findViewById(R.id.show);
        show.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,DetailActivity.class);
                startActivity(intent);
            }
        });
    }
    protected void onDestroy() {
        super.onDestroy();
        Log.i(tag,"调用onDestroy()方法");
    }
    protected void onPause() {
        super.onPause();
        Log.i(tag, "调用onPause()方法");
    }
    protected void onRestart() {
        super.onRestart();
        Log.i(tag, "调用onRestart()方法");
    }
    protected void onResume() {
        super.onResume();
        Log.i(tag, "调用onResume()方法");
    }
    protected void onStart() {
        super.onStart();
        Log.i(tag, "调用onStart()方法");
    }
    protected void onStop() {
        super.onStop();
        Log.i(tag, "调用onStop()方法");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值