-
三、Activity生命周期
-
- 1、Activity生命周期运行过程
-
2、Activity生命周期中方法调用
-
四、Activity的跳转和数据传递
-
- 1、显式跳转和隐式跳转
-
- 1.1 显式跳转
-
1.2 隐式跳转
-
2、Activity之间的数据传递
-
五、Activity启动模式
-
- 1、standard:
-
2、singleTop
-
3、singleTask
-
4、singleInstance
=======================================================================
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
创建布局
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.println(“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
<category android:name="android.intent.
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享
category.DEFAULT" />
//隐式调用
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();
bundle.putString(“name”,“szh”);
intent.putExtras(bundle);