Android Activity 基础详解

安卓基础知识之Activity篇(一):Activity生命周期 安卓基础知识之Activity篇(一):Activity生命周期 安卓基础知识系列旨在简明扼要地提供面试或工作中常用的基础知识,让对安卓还不太熟悉的小伙伴更快地入门。同时自己在工作中,也没法完全记住所有的基础细节,写这样的系列文章,可以让自己形成一个更完备的知识体系,同时给自己日后留个知识参考。 开始的开始 安卓四大组件中,最常用的组件莫过于我们的Activity组件。安卓程序员每天都在直接或间接地接触着Activity,所以Activity基础知识的重要性不言而喻。 正文 一. 正常情况下的生命周期 阅读详情

活动(Activity)是一种可以包含用户界面的组件,主要用和用户进行交互。一个应用程序中可以包含零个或多个活动。



1.活动的基本用法

首先我们创建一个工程。命名为TestActivity。


然后一直点击下一步会到以下界面。


因为这个时候系统默认想要为我们创建一个命名为MainActivity的活动,并加载了布局activity_main.xml。我们不去更改它,建立完成之后进去看它的代码,我们就知道怎么回事了。(下面的代码为了让读者看到路径更好的理解活动,我将会放出图片)


这就是一个活动的代码部分,首先新建一个活动类并让其继承Activity,然后在其中重写onCreate()方法进行初始化,最后通过setContentView()来加载一个布局。


这就是我们所加载的布局,布局通常放在res下的layout文件包下。


当然,作为安卓的四大组件,活动想要正常使用自然是需要在AndroidManifest.xml中注册(11-17行代码)的。如果想要在程序启动时候首先跳转到该活动,就需要写入图中12-16行代码的声明。

然后是几个知识点:

A)隐藏标题栏,只需要在加载布局之前,写入requestWindowFeature(WINDOW.FEATRUE_NO_TITLE)即可。

B)Toast提醒方式,在程序中使用它可以将一些短小的信息提示给用户,这些信息存在一段时间后会自动消失。写入Toast.makeText(Context, " ", Toast.LENGTH_SHORT).show即可。这个方法实际上传入的是三个参数:第一个是上下文Context;第二个是想要显示的文本内容;第三个是显示的时间长,内置的常量除了我们写出的Toast.LENGTH_SHORT还有Toast.LENGTH_LONG。然后调用show()就可以将Toast显示在屏幕上了。

C)菜单的使用,由于手机使用情况跟电脑不同,它只有很小的一个屏幕,而且很有可能由于某种需求,我们的活动上必须显示大量的菜单列表,这时候为了避免占用屏幕我们可以采用菜单方式来实现。由于在编写软件的过程中我们可能涉及到大量的菜单,因此我们可以新建一个文件夹专门用来放菜单(就像布局那样)。所以在res下新建一个menu文件夹,然后在里面创建我们的第一个菜单布局。如下图所示:


然后我们需要在活动中去实现如下代码:

package company.testactivity;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.add_item:
                Toast.makeText(MainActivity.this, "Add Selected", Toast.LENGTH_SHORT).show();
                break;
            case R.id.remove_item:
                Toast.makeText(MainActivity.this, "Remove Selected", Toast.LENGTH_LONG).show();
                break;
            default:
        }
        return true;
    }
}

首先通过重写构造方法onCreateOptionMenu()来创建菜单,通过getMenuInflater得到MenuInflater对象,在调用它的inflate方法就可以给当前活动创建菜单了。紧接着,我们为菜单定义一个点击事件,表示我们这个菜单不是“只可远观不可亵玩”的,同时应用了刚才所提到的Toast方法。


D)销毁一个活动。想要通过代码销毁一个活动时,只需要写入finish()方法即可。



2.Intent在活动中的使用

Intent为意图的意思,这很形象的描述了它的作用,而它主要分为显式和隐式两种。

我们先来看显式Intent。

首先新建一个活动,并加载一个布局,前面已经讲述过方法了,记得注册就好,不再赘述。重点来看主活动中的代码:

package company.testactivity;

    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;

    public class MainActivity extends AppCompatActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            Button mButton = (Button) findViewById(R.id.explicit_intent);
            mButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    String data = "this is a extra information from MainActivity";
                    Intent explicitIntent = new Intent(MainActivity.this, AnotherActivity.class);
                    explicitIntent.putExtra("extra data", data);
                    startActivity(explicitIntent);
                }
            });
        }
    .
    .
    .    
    }

我们增添了一个按钮,然后为其设置了一个点击事件。在点击逻辑中写入了Intent相关的东西。首先new一个explicitIntent实例,里面传入两个参数:当前活动和目标活动。通过startActivity(explicitIntent)方法即可实现由一个活动跳转到另一个活动的操作。只不过我们这里一并演示了跳转过程中携带信息,这是Intent很重要的一个功能。通过putExtra()方法来实现,传入两个参数:信息的名称和信息的内容。

package company.testactivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

/**
 * Created by samyang on 2016/9/12.
 */
public class AnotherActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.another_activity);
        Intent intent = getIntent();
        String data = intent.getStringExtra("extra data");
        Toast.makeText(AnotherActivity.this, data, Toast.LENGTH_LONG).show();
    }
}

然而目标活动想要接收传过来的信息需要调用getIntent()方法来获取从第一个活动传过来的意图实例,然后利用该实例调用getStringExtra()方法并传入信息名称来拿到信息,这里我们还是通过Toast作一个简单的演示。


这里简单提一下,布局都很简单,左边是放了一个TextView,下面放了一个Button;右边仅放了一个TextView。代码就不放出来了,接下来的简单部分亦是。

接下来看隐式Intent

隐式Intent并不直接指定想要跳转的活动,而是指定一系列更为抽象的<action>及<category>信息,然后交给系统去分析这个intent从而判断想要启动的活动。我在在<action>标签中指定活动可以响应的action,而<category>则包含了一些附加信息,用于更精确的匹配响应。只有<action>及<category>能够同时匹配Intent中指定的action及category时这个活动才能响应Intent。核心代码为:

<activity android:name=".ThirdActivity">
    <intent-filter>
        <action android:name="company.testactivity.ACTION_START"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.MY_CATEGORY"/>
    </intent-filter>
</activity>

Button maButton = (Button) findViewById(R.id.implicit_intent);
maButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent implicitIntent = new Intent("company.testactivity.ACTION_START");
        implicitIntent.addCategory("android.intent.category.MY_CATEGORY");
        startActivity(implicitIntent);
    }
});
点击新加入的按钮之后跳转到ThirdActivity如下图所示:


除此之外,隐式的Intent还有更多用处。例如:可以启动其它程序的活动,这使得Android中的多个软件共享成为了可能。

返回数据

在演示显式Intent的时候我们使用到了将数据传送给下一个活动,那么自然还有将数据返回给上一个活动这一操作。此时你查阅文档可以知道,返回上一个活动按一下back即可,但是并没有用于启动活动Intent来传递数据的,不过Activity提供了一个startActivityForResult()方法,以实现我们并且它期望在活动销毁时返回一个数据给上一个活动,那么用它肯定可想要的操作。
更改explicitButton按钮的点击逻辑如下:
Button mButton = (Button) findViewById(R.id.explicit_intent);
mButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        String data = "this is a extra information from MainActivity";
        Intent explicitIntent = new Intent(MainActivity.this, AnotherActivity.class);
        explicitIntent.putExtra("extra data", data);
        startActivityForResult(explicitIntent, 1);
    }
});
startActivityForResult()方法接收两个参数:第一个还是Intent;第二个是请求码,用于在之后的回调判断数据的来源。
在跳转的活动中添加一个按钮,其中逻辑如下:
Button backButton = (Button) findViewById(R.id.back_button);
backButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent1 = new Intent();
        intent1.putExtra("data return", "Hello MainActivity");
        setResult(RESULT_OK, intent1);
        finish();
    }
});
这里又构建了一个Intent,但它没有任何“意图”,仅仅用来存放要返回的数据。然后调用了setResult()方法,该方法很重要,专门用于向上一个活动返回数据。其中传入两个参数:第一个是活动返回处理结果,一般只传RESULT_OK或RESULT_CANCELED;第二个就是带有要返回数据的Intent对象。然后调用finish()销毁当前活动。
在MainActivity中重写onActivityResult构造方法如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
        case 1:
            if (resultCode == RESULT_OK){
                String returnedData = data.getStringExtra("data return");
                Toast.makeText(MainActivity.this, returnedData, Toast.LENGTH_SHORT).show();
            }
            break;
        default:
    }
}
返回到了上一个活动之后,想要接收返回的数据必须要重写onActivityResult构造方法,它带有三个参数:第一个为requestCode即我们在启动活动时传入的请求码;第二个为resultCode即返回数据时传入的处理结果;第三个为data即携带着返回数据的intent。因此我们首先需要通过requestCode判断数据来源,然后通过resultCode判断处理结果是否成功,最后拿出数据。
当然,我们这里采用的是按钮点击事件调用finish()方法销毁的活动。我们一样可以吧这段点击逻辑放在onBackPressed()方法中,这样通过back键就可以达到相同的效果了。


3.活动的生命周期

实际上Android是通过任务(task)来管理活动的,一个任务就是一组存放在栈里的活动集合,这个栈也被称为返回栈(Back Stack),栈是一种先进后出的数据结构,采用下图来帮助理解:


而关于活动的生命周期,我们需要知道,每个活动在其生命周期内最多可能会有四种状态:

a)运行状态:当一个活动处于返回栈的栈顶时,就处于运行状态,这种状态的活动是系统最不愿意回收,因为这会带来极差的用户体验。

b)暂停状态:当一个活动不再处于栈顶但仍然可见时就会进入这种状态。处于暂停状态的活动仍然是完全存活的,系统也不愿意回收这样的活动,只有在内存极低的时候才会考虑去回收这样的活动。

c)停止状态:当一个活动不再处于栈顶位置,并且完全不可见,就进入了停止状态。此时系统仍然为这种活动保留了成员变量,但是当其他地方需要更多内存时就会回收这种活动,所以这种状态下保存的数据并不可靠。

d)销毁状态:当一个活动从返回栈中移除了之后就变成这种状态,系统最愿意回收这种状态的活动。

而生命周期的七种回调方法在理解上述四种状态之后再结合下图就可以很好的理解了。


另外你还需要知道对于活动的一种划分方式,除了onRestart()方法外,其他六种方法是两两对应并可划分如下:
a)完整生存期:活动在onCreate()方法和onDestory()方法之间所经历的,一般情况下,一个活动会在onCreate()时完成各种初始化操作,在onDestory()时释放内存。
b)可见生存期:活动在onStart()方法和onStop()方法之间所经历的,在可见生存 期内,活动对于用户总是可见的,即便有可能无法和用户进行交互。我们可以通过这两个方法,合理地管理那些对用户可见的资源。比如在 onStart()方法中对资源进行加载,而在onStop()方法中对资源进行释放,从而保证处于停止状态的活动不会占用过多内存。
c)前台生存期:活动在 onResume()方法和 onPause()方法之间所经历的,在前台生存期内,活动总是处于运行状态的,此时的活动是可以和用户进行交互的,我们平时看到和接触最多的也这个状态下的活动。


4.活动被回收了怎么办

当我们的临时数据还存放在活动中,可活动被回收了怎么办?这样的情况明显是常常会遇见的。查阅文档可以发现Activity提供了一个onSaveInstanceState()回调方法,这个方法可以保证活动在回收前一定可以调用。所以我们可以利用这个方法,在活动被销毁前,将一些我们期望保留的数据保存下来。
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    String tempData = "Something you want to save";
    outState.putString("data key", tempData);
}
可以看到onSaveInstanceState()携带了一个Bundle类型的参数,Bundle类提供了一系列的方法用于保存数据,每个保存方法需要传入两个参数:取出数据时用到的键值和数据对象。
然后取出的数据可以在onCreate中去恢复,因为它也有一个Bundle类型参数,这个参数在一般情况下都是 null,但是当活动被系统回收之前有通过 onSaveInstanceState()方法来保存数据的话,这个参数就会带有之前所保存的全部数据,我们只需对Bundle对象调用getString()方法并传入保存时写入的键值即可,当然我们在取出数据之前最好先判断一下Bundle对象是否为空。


5.活动的启动模式

standard:活动默认的启动模式,在这种模式下,每次活动启动时都不会考虑当前返回栈的栈顶是否为该活动,而去创建一个该活动的新实例并让其处于栈顶。

singleTop:在注册活动时可以指定活动的启动模式。在这种模式下,每次活动启动时会判断当前栈顶活动是否为我们想要启动的活动。若是则不再创建该活动的新实例;若不是则会创建一个新的活动实例并让其处于栈顶。缺点:该模式只考虑了栈顶活动,而没有考虑栈内处于非栈顶的地方是否已经创建了想要启动活动的实例。

singleTask:在这种模式下,每次活动启动时都会判断当前返回栈内是否已经存在该活动的实例,若是则将目标启动活动上面的活动移除返回栈直至该活动处于栈顶而不创建新的活动实例;若不是则创建一个新的活动实例并让其处于栈顶。

singleInstence:在这种模式下,活动启动时会开启一个新的返回栈来管理这个活动,这种模式主要用于当活动中数据需要跨程序共享时。




至此,Android四大组件中的Activity的常见用法已经介绍完毕。


Activity详解与实现,Android工程师面试题 这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。上述高清技术脑图以及配套的架构技术PDF可以点击我的GitHub免费获取当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。 阅读详情

相关推荐

Android四大组件:Activity详解(一)基础概念与生命周期

Activity是Android应用程序的核心组件之一,它提供了一个用户界面,让用户可以与应用程序进行交互。从用户体验的角度来看,Activity就像是应用程序的"窗口"或"页面"。一个Android应用通常由多个Activity组成,它们之间可以相互跳转,共同构成了应用的用户界面流程。Activity的生命周期是指从创建到销毁的整个过程,Android系统通过一系列回调方法来管理Activity的生命周期。了解这些生命周期方法对于开发高质量的Android应用至关重要。onCreate()

Ya-Jun 的博客 1021

Android 之 Activity 详解

最近在学习Android开发方面的知识,整理了一下关于Android中Activity方面的知识,也算是对自己学的知识进行了总结。Activity 在 Android开发中有着极其重要的位置,Activity是Android中四大组件之一,而我们的Android应用是由一个或多个Activity组成的。本篇文章将从以下几个方面给大家分享Activity的知识: 文章目录1. Activity 的概念1.1 Activity 的概念1.2 创建 Activity2. Activity 的启动方法2.1 显示启

小曾同学的博客 18万+

特征模理论指导滤波天线设计的优势和方法

本文探讨了特征模理论在滤波天线设计中的应用优势和方法。特征模理论通过分析天线结构的本征模特性,突破了传统经验设计的局限,实现了辐射与滤波功能的一体化设计。文章重点阐述了如何利用模式显著性(MS)和模式加权系数(MWC)来指导辐射零点的产生,揭示了辐射零点形成的物理机制。通过特征模分析,设计师可以明确调控天线结构和馈电系统,优化滤波性能。这种方法为现代多频/宽带滤波天线设计提供了理论依据和实用工具,显著提升了设计效率和性能指标。

qq_64207806的博客 957

Android基础——Activity

Android基础一级目录二级目录三级目录 一级目录 二级目录 三级目录

松仔Log的博客 3万+

嵌入式系统启动流程解析:ROM Code、Bootloader与启动代码的协同工作

本文深入解析嵌入式系统从通电到运行的完整启动流程,详细阐述了ROM Code、Bootloader与启动代码三者如何像接力赛般协同工作。ROM Code作为芯片固化的初始引导程序,负责硬件自检并加载Bootloader;Bootloader作为系统总指挥,初始化关键硬件并加载操作系统内核;启动代码则为C语言运行环境铺平道路。理解这三者的分工与协作,是进行系统移植和解决启动问题的关键。

dd012的博客 554

Cadence17.4 Allegro PCB制板(gerber / 光绘)文件输出的顺序及注意点

Cadence Allegro PCB制板文件输出 (gerber 光绘文件输出)

weixin_45331044的博客 1万+

【Android】安卓四大组件之活动(Activity) 详解:从基础到进阶

在安卓应用开发的世界里,Activity 作为安卓四大组件之一,是用户与应用进行交互的重要窗口,它承载着应用的界面展示与用户操作响应功能。无论是打开一款 APP 看到的主界面,还是点击按钮后弹出的新页面,都是 Activity 在发挥作用。本文将深入剖析 Activity,带你全面了解它的原理、使用方法及进阶技巧

m0_59734531的博客 3873

平衡电桥在高压绝缘检测中的动态切换策略与误差优化

本文深入探讨了平衡电桥在高压绝缘检测中的动态切换策略与误差优化方法。通过分析四种基本切换模式及智能切换时序设计,显著提升检测精度与范围。结合电阻选型黄金法则和软件补偿技术,有效降低测量误差,为电动汽车电池管理系统提供可靠的安全保障。

weixin_30275415的博客 473

Android面试基础之Activity详解

我们都知道android中有四大组件:Activity 活动,Service 服务,Content Provider 内容提供者,BroadcastReceiver 广播接收器,Activity是我们用的最多也是最基本的组件,因为应用的所有操作都与用户相关,Activity 提供窗口来和用户进行交互。上面已经说了,系统通过堆栈来管理activity,当一个新的activity开始时,它被放置在堆栈的顶部和成为运行活动,以前的activity始终保持低于它在堆栈,而不会再次到达前台,直到新的活动退出。

孔乙己大叔的博客 1935

J-LINK下载程序出现No Cortex-M Device found in JTAG chain…问题,最全7种解决方法

J-Link下载程序出现No Corect 等的问题的7种方法 后来编辑JLinkSettings.ini文件,找到"Device"项,将其更改Device="Cortex-M0+"

cjmsea的博客 5613

SAP-MM-采购申请字段解析

采购申请抬头以及行项目字段解析

yanzibing99的博客 7306

Android Activity基础详解

你,一会看我,一会看云。我觉得,你看我时很远,你看云时很近。

Wtoria的博客 2476

全国各省份影像下载地址(11级别)

cesium中使用urltemplate加载,leaflet中使用tile加载,具体加载有问题可以给我留言。

资深三维GIS开发 5152

Android基础之Activity launchMode详解

本文来自http://blog.youkuaiyun.com/liuxian13183/,引用必须注明出处! Activity的启动模式,英文名lauchMode,是页面的基础属性,属于工作中必须掌握的知识点。lanchMode的设置不同,会影响Activity生命周期中各个方法的调用顺序,也会影响Activity在堆栈中的保存方式。做了许多个项目,对此有一点总结,...

劝学 2588

18年陕西省TI杯电赛无人机赛题视觉部分

更新: 相同任务另外两种不同的视觉方法: https://blog.youkuaiyun.com/qq_41895747/article/details/97613077 https://blog.youkuaiyun.com/qq_41895747/article/details/97614971 任务:识别前方的方框,无人机从方框中飞出去 视觉任务:识别特定方框,返回方框中心坐标 # -*- codin...

沉迷单车的追风少年 1506

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android基础之Activity的详解

Activity是什么?对于Android来说activity就是图形化的界面用于与用户进行交互的作用,对于我们程序员来说就是一个Java类。 activity是Android四大组件之一,对于学习Android应用开发来说是最重要的知识之一。下面分享一下我总结的一些activity的认识。首先activity是四大组件之一,所以需要在AndroidManifest.xml里面进行注册。

skyredni的博客 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

android fragment activity 交互,Android基础之Fragment与Activity交互详解

今天继续讲解Fragment组件的特性,主要是跟Activity的交互和生命周期的关系,我们前面已经说过Fragment是依赖于Activity的,而且生命周期也跟Activity绑定一起。下面我们看看Fragment跟Activity的关系。1、为Activity创建事件回调方法在一些情况下, 你可能需要一个fragment与activity分享事件。 一个好的方法是在fragment中定义一个...

weixin_31881651的博客 1487

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android基础之Fragment与Activity交互详解

今天继续讲解Fragment组件的特性,主要是跟Activity的交互和生命周期的关系,我们前面已经说过Fragment是依赖于Activity的,而且生命周期也跟Activity绑定一起。下面我们看看Fragment跟Activity的关系。 1、为Activity创建事件回调方法 在一些情况下, 你可能需要一个fragment与activity分享事件。 一个好的方法是在fragmen

阳光灿烂的日子的博客 558

Android基础—Activity详解

Activity知识体系图谱 1.onStart onStop和onResume onPause从描述上看差不多,对我们来说有何实质不同? 做 SDK 必须从开发者的角度考虑,提供必要的回调信息;让开发者获得必要的回调响应 onStart(),onStop()是否可见角度进行回调的 onResume(),onPause()是否位于前台(获取焦点)角度进行回调的 2.ActivityA跳转...

weixin_39352694的博客 224

[安卓基础] 009.组件Activity详解

组件Activity详解 这篇文章学到得内容 1、什么是Activity 2、Activity的生命周期 3、如何保存Activity的状态 4、Activity之间切换时,相互之间生命周期的执行顺序 什么是Activity Activity是Android用来和用户进行界面交互的组件。比如,你用android手机打电话,查看地图,玩游戏,都是在已经写好的Ac...

weixin_30920597的博客 175

【Android基础】-Activity启动模式详解

引言Activity有四种启动模式standard(默认),singleTop,singleTask,singleInstance,相信大家都知道,但是它们之间到底有什么区别可能还是有些人说不太清楚,本文将就这四种启动模式的区别做简单的介绍,然后通过实验验证咱们的结论。四种启动模式介绍一、standard, standard是Activity默认的启动模式,如果在AndroidManifest.x

小飞飞的专栏 521

Activity详解、Intent使用、Fragment详解-Android基础知识整理

Activity详解 Intent的使用 Fragment详解Part 1:Activity详解1.什么是活动

qq_38333853的博客 3354

Android基础#3:Android Activity生命周期详解,onCreate~onRestart

作为与用户交互的桥梁,从生到灭,Activity有自己的生命周期,相信对下面这张图都不陌生。这张图详细而直观得表现了Activity各生命周期间的关系。

记录和分享程序人生的点点滴滴 2225
上一篇: Android Content Provider 基础详解
下一篇: 【Java】JDBC基础及应用
edcSam
博客等级 码龄11年 5粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值