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()方法");
}
}