zoukankan      html  css  js  c++  java
  • 四大组件之---全面了解Activity的生命周期,启动方式,使用场景

    Activity本质:是android界面的载体

    一、生命周期:

    1、Activity的启动 onCreate->onStart->处于可见状态
    2、onResume-->能和用户进行交互
    2、Activity的不可见 onPause->onStop
    3、Activity的重新可见并可以进行交互 onRestart->onStart->onResume
    4、Activity的销毁 onPause->onStop->onDestory
    onPause:停止当前Activity的各种状态,包括音频视频等
    

      Activity之间相互交互:A.Activity调用B.Activity(在B.activity显示之后才会将A.activity停止(onStop),back键同理)
    点击后:

    A.onPause--> B.onCreate-->B.onStart-->B.onResume
    A.onStop
    

      点击back键返回后:

    B.onPause-->A.onRestart-->A.onStart-->A.onResume
    B.onStop-->B.onDestory
    

      流程图:

    二、Activity启动方式

    1. 显示启动

    ①最常见的:
    startActivity(new Intent(当前Act.this,要启动的Act.class));
    ②通过Intent的ComponentName: ComponentName cn = new ComponentName("当前Act的全限定类名","启动Act的全 限定类名") ; Intent intent = new Intent() ; intent.setComponent(cn) ; startActivity(intent) ;
    ③初始化Intent时指定包名: Intent intent = new Intent("android.intent.action.MAIN"); intent.setClassName("当前Act的全限定类名","启动Act的全限定类名"); startActivity(intent);

    2. 隐世启动

    通过Intent-filter的Action,Category或data来实现
    

    3、使用intent进行组件间通信

    Intent in = new Intent(FirstActivity.this, ThirdActivity.class);
    //1.传单个数据
    in.putExtra("test","TTIT");
    in.putExtra("number",100);
    //2.传多个数据
    Bundle b = new Bundle();
    b.putInt("number", 100);
    b.putString("test", "TTIT");
    in.putExtras(b);
    startActivity(in);
    1.FirstActivity启动ThirdActivity
    Back Stack(回退堆栈)
    Activity启动模式:
    startActivityForResult(in, 1001);
    2.FirstActivity接受ThirdActivity返回的数据 @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); Log.e("tag", "requestCode =" + requestCode); Log.e("tag", "resultCode =" + resultCode); Log.e("tag", "data =" + data.getStringExtra("back")); } 3.ThirdActivity设置返回的数据 Intent backIn = new Intent(); backIn.putExtra("back", "abcdef"); setResult(1002, backIn);

    三、Activity启动模式

    standard模式:(默认) 

     singleTop模式:

    在该模式下,如果栈顶Activity为我们要新建的Activity(目标Activity),那么就不会重 复创建新的Activity。

     singleTask模式:

    与singleTop模式相似,只不过singleTop模式是只是针对栈顶的元素,而singleTask模式 下,如果task栈内存在目标Activity实例,则: 将task内的对应Activity实例之上的所有Activity弹出栈。 将对应Activity置于栈顶,获得焦点。

     singleInstance(全局唯一)模式:

    是我们最后的一种启动模式,也是我们最恶心的一种模式:在该模式下,我们会为目标Activity分配一 个新的affinity,并创建一个新的Task栈,将目标Activity放入新的Task,并让目标Activity获得 焦点。新的Task有且只有这一个Activity实例。 如果已经创建过目标Activity实例,则不会 创建新的Task,而是将以前创建过的Activity唤醒(对应Task设为Foreground状态)

  • 相关阅读:
    【原】用IDEA远程Debug Tomcat服务
    【原】getInputStream()与getParameterMap()获得Post请求的数据区别
    【原】使用Eclipse远程Debug测试环境
    【原】配置MySQL服务器端的字符集
    【原】Spring整合Redis(第三篇)—盘点SDR搭建中易出现的错误
    【原】Spring整合Redis(第二篇)—SDR环境搭建具体步骤
    【原】Spring整合Redis(第一篇)—SDR简述
    【转】InitializingBean的作用
    【原】Redis windows下的环境搭建
    【原】Maven解决jar冲突调试步骤:第三方组件引用不符合要求的javassit导致的相关异常
  • 原文地址:https://www.cnblogs.com/ljstudy/p/14586041.html
Copyright © 2011-2022 走看看