Activity详解与实现,2024Android不死我不倒

本文详细介绍了Android中的Activity生命周期过程,包括onCreate至onDestroy的方法调用,显式和隐式跳转的实现,以及Activity启动模式的设定。此外,还涉及数据在Activity间的传递方法。
摘要由CSDN通过智能技术生成

//设置布局

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

//隐式调用

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

五、Activity启动模式

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

Activity有四种启动模式,在AndroidManifest中设置Activity的android:launchMode属性,设置Activity的启动模式。

android:launchMode属性:

  • standard:标准模式,默认

  • singleTop:Task栈顶复用模式

  • singleTask:Task栈内复用模式

  • singleInstance:全局单例模式

1、standard:


  • Activity是由任务栈管理的,每启动一个Activity,就会被放入栈中,按返回键,就会从栈顶移除一个Activity。

  • standard是默认的启动模式,即标准模式。没启动一个Activity,都会创建一个新的实例

<activity

android:name=“.jump.BActivity”

android:launchMode=“standard”>

2、singleTop


  • 当要启动的目标Activity已经位于栈顶时,不会创建新的实例,会复用栈顶的Activity,并且其onNewIntent方法会被调用;如果目标Activity不在栈顶,则跟standard一样创建新的实例。

<activity
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

考虑到文章的篇幅问题,我把这些问题和答案以及我多年面试所遇到的问题和一些面试资料做成了PDF文档

喜欢的朋友可以关注、转发、点赞 感谢!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

源码讲义、实战项目、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

考虑到文章的篇幅问题,我把这些问题和答案以及我多年面试所遇到的问题和一些面试资料做成了PDF文档

[外链图片转存中…(img-OJ5CcfzL-1712330429616)]

[外链图片转存中…(img-yhW9tG31-1712330429616)]

喜欢的朋友可以关注、转发、点赞 感谢!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值