Activity 详解与实现
=======================================================================
Activity 是 Android 应用的四大组件之一(另外三个是 Service、BroadcastReceiver 和 Comtenprovider),而 Activity 是 Android 应用最常见的组件之一。一个 Android 应用往往包括多个 Activity,不同的 Activity 向用户呈现不同的操作界面。Android 应用的多个 Activity 组成 Activity 栈,当前活动的 Activity 位于栈顶。
Activity 是 Android 应用中负责与用户交互的组件——大致上可以把它想象成 Swing 编程中的 JFrame 控件。不过它与 JFrame 控件的区别在于:JFrame 控件本身可以设置布局管理器,不断向 JFrame 中添加组件,但 Activity 只能通过 setContentView(View)来显示指定组件。
=======================================================================
import androidx.appcompat.app.AppCompatActivity;
//创建 ActivityTest 继承 AppCompatActivity
public class ActivityTest extends AppCompatActivity {
}
2 在 AndroidManifest.xml 中声明新建的 Activity
<activity android:name=".ActivityTest"></activity>
3 创建布局并在 Activity 的 OnCreate 中设置
创建布局
public class ActivityTest extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置布局
setContentView(R.layout.activity_test);
}
}
=========================================================================
当 Activity 处于 Android 应用中运行时,它的活动状态有 Android 以 Activity 栈的形式管理,当前活动的 Activity 位于栈顶。随着不同应用的运行,每个 Activity 都有可能从活动状态转入非活动转态,也可能从非活动转态转入活动转态。
从左往右诠释了 Activity 从创建到运行再到销毁
在 Activity 的整个生命周期发生在第一次调用 onCreate 方法到最后一次调用 onDestroy 之间。一个 Activity 将在 onCreate 方法中完成所有“全局”状态的设置,并在 onDestroy 方法中释放所有剩余的资源。
在 Activity 的 visible 生命周期发生在 onStart 方法到 onStop 方法之间相应调用。这两种方法之间,可以维护向用户显示 Activity 所需的资源。
Activity 的 foreground 生命周期发生在 onResume 方法和 onPause 方法之间。Activity 通常在这两个方法可以在恢复状态和暂停状态之间进行切换。
onCreate(Bundle saveStatus):创建 Activity 时被回调。该方法只会被调用一次。
onStart():启动 Activity 时被回调
onRestart():重新启动 Activity 时被回调。在 onStart()方法后一定会回调 onResume()方法。
onPause():暂停 Activity 时回调
onStop():停止 Activity 时回调
onDestory():销毁 Activity 时被回调。该方法只会被调用一次
public class ActivityTest extends AppCompatActivity {
//创建 Activity
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
System.out.print
ln("onCreate");
}
@Override
protected void onStart() {
super.onStart();
System.out.println("onStart");
}
@Override
protected void onResume() {
super.onResume();
System.out.println("onResume");
}
@Override
protected void onPause() {
super.onPause();
System.out.println("onPause");
}
@Override
protected void onStop() {
super.onStop();
System.out.println("onStop");
}
@Override
protected void onRestart() {
super.onRestart();
System.out.println("onRestart");
}
@Override
protected void onDestroy() {
super.onDestroy();
System.out.println("onDestroy");
}
}
=============================================================================
通过 Intent(意图)实现 Activity 的显式跳转和隐式跳转
1.1 显式跳转
显式跳转有四种格式
//显式跳转
Intent intent = new Intent(this, BActivity.class);
startActivity(intent);
//显示跳转
// Intent intent = new Intent();
// intent.setClass(this, BActivity.class);
// startActivity(intent);
//通过设置 setClassName 实现显式跳转,需要传入完整的 Activity 地址
// Intent intent = new Intent();
// intent.setClassName(this, "com.example.test.jump.BActivity");
// startActivity(intent);
//通过设置 Component 实现显式跳转,需要传入完整的 Activity 地址
// Intent intent = new Intent();
// intent.setComponent(new ComponentName(this, "com.example.test.jump.BActivity"));
// startActivity(intent);
1.2 隐式跳转
1.2.1 隐式 Intent 图解
1.2.1 隐式 Intent 实现
在通过隐式调用时,需要在 AndroidManifest 中设置对应 Activity 的 action
<activity android:name=".jump.BActivity">
<intent-filter>
<action android:name="com.example.test.jump.BActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
//隐式调用
Intent intent = new Intent();
intent.setAction("com.example.test.jump.BActivity");
startActivity(intent);
Activity 之间数据的传递可以通过 Intent 中的 putExtra 方法传值
intent.putExtra("szh",1);
也可以通过实例化 Bundle 类,然后通过 Bund 的 put 方法设置自己想要的值,在通过 putExtra 方法传值
Bundle bundle = new Bundle();
评论