Android之Activity全面解析

前言

基于最近要准备去面试,特意系统的复习了下Android基础,看到Activity这块时,发现很多都忘了,而且之前也没有系统的学习和写笔记记录,所以,特此写下这篇关于Activity的一些理解,旨在帮助大家更好的理解Activity.

Activity是什么?

Activity是一个Android应用程序组件(也称为Android四大组件之一),它提供了一个屏幕,用户可以通过该屏幕进行交互以执行某些操作,例如拨打电话,拍照,发送电子邮件或查看地图。每个活动都有一个窗口,用于绘制其用户界面。窗口通常填满屏幕,但可能比屏幕小,并漂浮在其他窗口的顶部.

Android应用程序通常由多个彼此松散绑定的Activity组成。通常,应用程序中的一个Activity被指定为“主要”Activity,该Activity在首次启动应用程序时呈现给用户。然后,每个Activity可以启动另一个Activity以执行不同的操作。每次新Activity开始时,前一个Activity都会停止,但系统会将Activity保留在后台堆栈中(“后堆栈”)。当一个新的Activity开始时,它会被推到后面的堆栈上,并引起用户的注意。后栈遵循基本的“ 后进先出”堆栈机制,因此,当用户完成当前活动并按下"后退按钮"时,它从堆栈弹出(并销毁),之前的活动恢复。(后台堆栈将在后面为大家详细介绍。)

如何创建Activity

要创建Activity,您必须创建Activity(或其现有子类)的子类。在子类中,您需要实现当Activity在其生命周期的各个状态之间转换时系统调用的回调方法,例如在创建,停止,恢复或销毁活动时。两个最重要的回调方法是:

public class ExampleActivity extends AppCompatActivity {

 @Override
    public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
//您必须实现此方法。系统在创建Activity时调用此方法。在您的实施中,您应该初始化Activity的基本组成部分。最重要的是,您必须在此处调用以定义Activity用户界面的布局。
        setContentView();
    }


//系统将此方法称为用户离开您的Activity的第一个指示(尽管并不总是意味着Activity正在被销毁)。这通常是您应该提交应该在当前用户会话之外保留的任何更改的地方(因为用户可能不会回来)。

@Override
    protected void onPause() {
        super.onPause();
        //在此处应该提交应该在当前用户会话之外保留的任何更改的地方
    }

}

在访问Activity时,必须在manifest中声明此Activity,

<manifest ... >
 <application ... > 
<activity android:name = “.ExampleActivity” />       ..
. </ application ... >   .
.. </ manifest >

你也可以指定Activity的<intent-filter>过滤器,如下:

<activity android:name = “. ExampleActivity ” android:icon = “@ drawable / app_icon” >
 <intent-filter> <action android:name = “android.intent.action.MAIN” /> 
<category android:name = “ android.intent.category.LAUNCHER“ />
 </ intent-filter>
 </ activity>  

如何启动Activity

您可以通过调用启动另一个Activity,通过startActivity()方法,并将Intent传递给您要启动的Activity。intent指定要启动的确切Activity或描述您要执行的操作类型(系统为您选择适当的活动,甚至可以来自不同的应用程序)。Intent(意图)还可以携带少量数据以供启动的活动使用。

  • 启动指定自建的Activity
Intent intent = new Intent(this, SignInActivity.class);
startActivity(intent);

此种启动又叫做显示Intent .

  • 启动其他类型的Activity
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
startActivity(intent);

此种启动又叫做隐式Intent .

有时候,我们可能需要从上一个Activity接收返回数据结果,这时,我们就需要另外一种启动方式了.

在这种情况下,通过调用startActivityForResult()(而不是startActivity())来启动Activity。然后,要从后续Activity接收结果,就需要实现onActivityResult()回调方法。完成后续Activity后,它会在您的onActivityResult() 方法中返回结果。

private void pickContact() 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值