Activity详解与实现,超全Android中高级面试复习大纲

  • 三、Activity生命周期

    • 1、Activity生命周期运行过程
  • 2、Activity生命周期中方法调用

  • 四、Activity的跳转和数据传递

    • 1、显式跳转和隐式跳转
    • 1.1 显式跳转
  • 1.2 隐式跳转

  • 2、Activity之间的数据传递

  • 五、Activity启动模式

    • 1、standard:
  • 2、singleTop

  • 3、singleTask

  • 4、singleInstance

一、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)来显示指定组件。

二、创建Activity

=======================================================================

1、新建类继承Activity或其子类


import androidx.appcompat.app.AppCompatActivity;

//创建ActivityTest继承AppCompatActivity

public class ActivityTest extends AppCompatActivity {

}

2 在AndroidManifest.xml中声明新建的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生命周期

=========================================================================

当Activity处于Android应用中运行时,它的活动状态有Android以Activity栈的形式管理,当前活动的Activity位于栈顶。随着不同应用的运行,每个Activity都有可能从活动状态转入非活动转态,也可能从非活动转态转入活动转态。

1、Activity生命周期运行过程


从左往右诠释了Activity从创建到运行再到销毁

在这里插入图片描述

  • 在Activity的整个生命周期发生在第一次调用onCreate方法到最后一次调用onDestroy之间。一个Activity将在onCreate方法中完成所有“全局”状态的设置,并在onDestroy方法中释放所有剩余的资源。

  • 在Activity的visible生命周期发生在onStart方法到onStop方法之间相应调用。这两种方法之间,可以维护向用户显示Activity所需的资源。

  • Activity的foreground生命周期发生在onResume方法和onPause方法之间。Activity通常在这两个方法可以在恢复状态和暂停状态之间进行切换。

2、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”);

}

}

四、Activity的跳转和数据传递

=============================================================================

1、显式跳转和隐式跳转


通过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);

2、Activity之间的数据传递


Activity之间数据的传递可以通过Intent中的putExtra方法传值

intent.putExtra(“szh”,1);

也可以通过实例化Bundle类,然后通过Bund的put方法设置自己想要的值,在通过putExtra方法传值

Bundle bundle = new Bundle();

bundle.putString(“name”,“szh”);

intent.putExtras(bundle);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值