Android技术分享交流区Android开发Android知识

Android复习之旅--Activity

2016-10-28  本文已影响202人  飘渺云轩

【修改后】
对于Activity是什么,相信大家都十分清楚了。在这里我就不扯那么多废话了。这里就说一下Android中的线程、进程、任务栈,Activity的启动模式还有现场保存问题。

什么是进程?

进程是操作系统分配内存空间的单位,每个进程的内存空间都是独立的。
在Android系统中,应用程序退出和进程退出是两个不同的概念,Android系统为了让应用程序可以被快速地开启,所以应用程序退出后,进程是不会退出的,只有系统的内存空间严重不足的时候,才会把进程给回收。当然,用户可以手动退出进程。

什么是线程?

线程是运行在进程里面的。是cpu执行的最小单位。如果进程挂了,线程也挂了。

什么是任务栈?

任务栈记录当前用户操作的行为的一种数据结构。(先进后出的数据结构)
一个应用程序默认是只有一个任务栈,特殊情况下singleInstance会有多个任务栈


Activity的Launch Model

Android采用任务栈(Task)的方式来管理Activity的实例。当启动一个应用时,Android就会为之创建一个任务栈。先启动的Activity压在栈底,后启动的Activity放在栈顶,通过启动模式可以控制Activity在任务栈中的加载情况。
栈的原则是“先进后出”

标准模式,默认。

在activity节点中加入 android:launchModel="singleTop"

在activity节点中加入 android:launchModel="singleTask"

在activity节点中加入 android:launchModel="singleInstance"


数据传递

Android复习之旅--Intent

数据保存

如果用户正在玩游戏或正在进行某些重要的业务处理时应用异常退出或者不小心把手机横竖切换了一下,导致当前Activity销毁重建,用户之前的操作都被销毁了,如果这样子来多几次,用户会疯掉的。
so,解决的方案目前有三种

将要保留的数据保存到Bundle对象中
当然,对于复杂的数据也可以保存到数据库中

  @Override
  protected void onSaveInstanceState(Bundle outState) {
      super.onSaveInstanceState(outState);
      //TODO 保存的数据
      outState.putString("name", "飘渺云轩");
   }

  @Override
  protected void onRestoreInstanceState(Bundle savedInstanceState) {
      super.onRestoreInstanceState(savedInstanceState);
      //TODO 取出保存的数据
      String name = savedInstanceState.getString("name");
      Toast.makeText(this, name, Toast.LENGTH_LONG).show();
  }
上一篇 下一篇

猜你喜欢

热点阅读