zoukankan      html  css  js  c++  java
  • 用Intent传递数据

    向下一个活动传递数据
    Intent除了跳转活动,还可以在各个活动之间传递数据,我们来看一下。
    启动活动时传递数据很简单,通过putExtra()方法,我们就可以将数据暂存在Intent中,putExtra()里要传入两个参数,第一个是键,用于第二个活动找到你,第二个则是存储的数据。
    我们在MainActivity将之前的代码修改一下

    button1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    String data="Hello!";
    Intent intent=new Intent(MainActivity.this,SecondActivity.class);
    intent.putExtra("extra_data",data);
    startActivity(intent);
    }
    });
    1
    2
    3
    4
    5
    6
    7
    8
    9
    那么第二个活动就得到了Intent里包含的数据,我们要将他取出来,通过getIntent来获取Intent,然后通过getStringExtra来获取传递的数据。(如果是int类型就是getIntExtra,以此类推)

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    Intent intent=getIntent(http://www.amjmh.com/v/);
    String data=intent.getStringExtra("extra_data");
    Log.d("SecondActivity",data);
    }
    1
    2
    3
    4
    5
    6
    7


    2.返回数据给上一个活动
    具体参考"第一行代码",原理一样,这里就不赘述了。
    当然Intent还有一些其他的功能,具体可以看看这个
    Intent:https://www.jianshu.com/p/67d99a82509b

    3.活动的生命周期

    Android是使用任务(Task)来管理Activity的,一个任务就是一组存放在栈里的Activity集合,这个栈被称作返回栈,栈(堆栈)是一种先进后出的数据结构。


      每当启动一个新的Activity时,它会被放入返回栈中,并处于栈顶的位置。每当我们按下Back键或调用activity的finish()方法去销毁一个活动时,处于栈顶的Activity会出栈,这时前一个入栈的Activity就会重新处于栈顶的位置。系统总是会显示处于栈顶的Activity给用户。

    Activity的生存期
    Activity类中定义了7个回调方法,覆盖了Activity生命周期的每一个环节,下面来一一介绍这7个方法

    1.onCreate()
      这个方法在每一个Activity类都会有,当我们新建一个Activity类时,一定会重写父类的onCreate方法,onCreate方法会在Activity第一次被创建时调用。我们应该在这个方法中完成Activity的初始化操作,比如说加载布局,初始化布局控件,绑定按钮事件等。

    2.onStart()
      这个方法在Activity由不可见变为可见时调用。

    3.onResume()
      这个方法在Activity准备好喝用户交互的时候调用。此时的Activity一定位于返回栈的栈顶,并且处于运行状态。

    4.onPause()
      这个方法在系统准备去启动或者恢复另一个Activity的时候调用。

    5.onStop()
      这个方法在Activity完全不可见的时候调用。它和onPause()方法的主要区别在于,如果启动的新Activity是一个对话框式的activity,那么,onPause()方法会得到执行,而onStop()方法并不会执行。

    6.onDestory()
      这个方法在Activity被销毁之前调用,之后Activity的状态将变为销毁状态。

    7.onRestart()
      这个方法在Activity由停止状态变为运行状态之前调用,也就是Activity被重新启动了

    4.活动的启动模式
    1.默认启动模式standard
    该模式可以被设定,不在manifest设定时候,Activity的默认模式就是standard。在该模式下,启动的Activity会依照启动顺序被依次压入Task中:


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


    3.栈内复用模式singleTask
    与singleTop模式相似,只不过singleTop模式是只是针对栈顶的元素,而singleTask模式下,如果task栈内存在目标Activity实例,则:

    1.将task内的对应Activity实例之上的所有Activity弹出栈。
    2.将对应Activity置于栈顶,获得焦点。


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

  • 相关阅读:
    android之Animation
    A. Puzzles CodeForces Round #196 (Div.2)
    HDU 4662 MU Puzzle 2013 Multi-University Training Contest 6
    UVa 11464 Even Parity 偶数矩阵
    LA 3635 Pie 派 NWERC 2006
    UVa 11520 Fill the Square 填充正方形
    UVa 11384 Help is needed for Dexter 正整数序列
    HDU 4639 Hehe 2013 Multi-University Training Contest 4
    HDU 4627 The Unsolvable Problem 2013 Multi-University Training Contest 3
    HDU 4608 I-number 2013 Multi-University Training Contest 1
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11667862.html
Copyright © 2011-2022 走看看