对于安卓开发中activity的四种启动模式的简单解析

对于安卓开发中activity的四种启动模式的简单解析

  • 为什么使用启动模式
  • 开始使用启动模式
  • 四种启动模式介绍
  • 四种启动模式使用场景

为什么使用启动模式

  在我们安卓开发过程中大家一定遇到过各种小问题,让人摸不着头脑。比如在我们编写好了登陆页面之后,模拟登陆,在网速比较慢时就会着急多点几次登陆按钮,之后进入主页面之后就会发现按手机的返回键时会返回好几个主页面,这就是我们在点击登陆时创建了太多的主页面的实例导致的小问题,但这种问题修改一下主页面的启动模式就可以很好的解决。

开始使用启动模式

  有过android studio 开发经验的开发者都知道,当我们新建一个activity之后,Android studio就会自动在AndroidManifest中注册这个activity信息,这个自动创建其实就默认自带了一种启动模式,standard模式,也是我们最常用的启动模式。如果想要指定特定的启动模式有两种方式:①只需要在AndroidManifest的该activity注册那里添加一行 Android:launchMode属性就可以了。②在代码中动态注册:通过intent的addFlags进行添加模式。

四种启动模式介绍

  1. standard模式:标准的启动模式,当没有特别设置启动模式,就默认是这种模式。该模式下不管我们的栈中是否有这个activity都会新建一个实例来显示该activity。
  2. singleTop模式:栈顶复用模式,如果栈顶已经有了这个activity就不会在创建新的实例,直接使用已经存在的实例。但是如果栈里面有该实例不过没有在栈顶也会重新创建实例放在栈顶,这个模式在一定程度上减少了创建新实例的资源消耗。
  3. singleTask模式:栈内复用模式,如果栈内有这个activity实例就不用再创建新的,直接把该activity上面的退出栈,把需要的栈放到栈顶使用。而如果栈内没有这个示例就要重新创建新的。
  4. singleInstance模式:堆内单例模式,在整个手机操作系统中只有一个实例存在,不管从哪一个任务栈里面获取这个实例都是同一个,不会创建新的,同时这种模式也满足singleTask的所有特性。

四种启动模式使用场景

  1. standard模式:如果没有特别的要求都默认使用该模式
  2. singleTop模式:一般可以用在消息推送的情境下,比如如果开发的是一个看新闻的软件,当用户在看新闻时刚好推送过来一个新闻消息,点击这个推送时检测到栈顶已经存在这个activity实例就不会在新建了,而是直接调用onNewIntent()方法,这样就不需要重复创建实例,返回时直接退回主页。还有上面我们提到的登陆按钮多次点击导致主页面创建了多个实例,也可以通过把登陆界面设置成使用singleTop模式来解决。
  3. singleTask模式:一般用在出现的次数比较多的页面中,比如主页,webView页面等。这样只要栈内有这个实例就不用重复创建了,节省很多资源。
  4. singleInstance模式:一般用在系统的一些配置中,比如系统的launcher和来电显示等系统的应用中,这种模式不太常用,因为使用之前必须保证你在整个手机系统中只会创建一个该实例。

你可能感兴趣的:(安卓开发,android)