`

Android Activity单例

 
阅读更多

在Android开发中经常会碰到当用户通过菜单操作重新回到之前的某个Activity的时候,希望该Activity能回到之前的状态,而不是重新创建一遍,比如常用的main Activity。这个时候就需要用到launchMode的单任务属性了

 

在android中activity的管理是用堆栈的方式。当启动一个新的activity时,此activity就被push到栈顶并获得焦点,旧栈顶的activity仍然存在,但是已经stop。当用户按下back键时,将栈顶的activity pop掉。此时新栈顶的activity resume。

 

单任务的activity如下方法进行创建

1、需要在Manifest.xml定义该Activity的launchmode,添加如下属性

android:launchMode="singleTask"

 

 launchMode包含4种值。

其中

standard为默认值,通常会在activity开始时创建一个新的实例。

singleTop当启动一个已经有实例在最前面(即栈顶)的activity时,重用此实例,然后去调用onNewIntent() 函数,创建新的intent。

singleTask当要去一个已经有task启动的activity的时候,不会去创建新的实例,而是将该task调至最前,已经存在的实例会去调用onNewIntent()函数创建新的intent。而对于之前的控件不会去销毁,这又节省了创建view的时间

singleInstance当要创建新的activity时会在新的task中创建activity,即一个task中只能存在一个该activity的实例

具体见

http://developer.android.com/reference/android/R.attr.html#launchMode

 

2、在activity中新增

protected void onNewIntent(Intent intent)

 函数。因为在该activity时需要调用此函数

 

参考

onNewIntent的介绍

http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent)

 

task和activity的管理

http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

 

activity的生命周期

http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

分享到:
评论

相关推荐

    Android Activity单例.doc

    `Android Activity单例`是指通过特定的配置使得一个`Activity`在整个应用的生命周期中只有一个实例存在,以实现特定的功能需求,如维持状态或者优化性能。下面将详细介绍如何实现`Activity`的单例模式以及其相关的...

    list循环退出Activity,单例模式实现android的退出功能,代替广播,singleton

    在Android开发中,Activity是应用程序中的一个基本组件,负责创建和管理用户界面。应用程序可能会由多个Activity组成,而在某些情况下,可能需要一次性结束所有的Activity,例如退出应用程序。通常情况下,开发者...

    android也架构之单例模式

    单例模式中有区分了懒汉式和饿汉式,懒汉式主要是用时间来换空间,饿汉式则是用空间来换时间。饿汉式是线程安全的,懒汉式是非线程安全的,如果要实现懒汉式的非线程安全,则可以再访问点添加synchronized关键字声明...

    activity service broadcast 单例模式 的综合使用

    通过综合使用Activity、Service、BroadcastReceiver和单例模式,我们可以构建一个高效且健壮的Android应用架构,确保后台任务的稳定运行,同时优化资源使用,提高用户体验。在实际项目中,这种组合方式对于实现跨...

    android Dagger2局部单例使用

    在Android中,我们可以将其理解为Activity级别的单例。 5. **@Scope**: Dagger2中的Scope注解用于定义作用域,例如`@ActivityScope`,这样可以限制单例在特定范围内有效。 **二、创建局部单例** 1. 首先,我们...

    android实现activity直接的传值问题

    在Android开发中,Activity是应用程序的基本组件,负责用户界面的展示和交互。当需要在不同的Activity之间传递数据时,Android提供了多种方式来实现这一功能。本文将深入探讨如何在Android中实现在Activity之间直接...

    Android-Activity之间数据传递的多种方式

    在Android应用开发中,Activity是用户界面的基本单元,它们之间的数据传递是十分常见的操作。本文将详细介绍Android中Activity之间数据传递的多种方式及其适用场景。 一、Intent传递数据 Intent是Android系统中...

    Android Service简单实例

    在需要启动服务的地方,比如Activity中,通过`startService()`方法。 ```java Intent intent = new Intent(this, MyStartService.class); startService(intent); ``` 4. **停止Service**: 虽然`Start Service`...

    Android应用开发多个activity完全退出程序方法

    4. **使用Singleton**:创建一个单例类,存储所有的Activity引用,然后在需要退出时,遍历并调用它们的`finish()`方法。 5. **设置App退出按钮**:在应用的主界面上添加一个退出按钮,点击时执行退出逻辑。可以结合...

    android Activity启动模式(launchMode)

    4. singleInstance(单实例模式):这是最严格的单例模式,Activity在系统中只有一个实例,而且它总是位于一个单独的任务栈中。无论从哪个地方启动,都会复用这个唯一的Activity实例。 二、Activity启动模式与...

    使用ViewModel解决多个Activity数据共享问题(Kotlin版)

    在Android应用开发中,尤其是使用Kotlin作为主要编程语言时,如何有效地在多个Activity之间共享数据是一个常见的挑战。`ViewModel`是Android架构组件之一,它为了解决这个问题提供了优雅的解决方案。本文将深入探讨...

    Android Activity LaunchMode

    4. **singleInstance**:这是最严格的单例模式,`Activity`在单独的任务栈中运行,且是该任务栈中唯一的一个`Activity`。无论从哪个位置启动,都会进入这个`Activity`,并且不会创建新的`Activity`实例。这意味着,...

    Android之Activity启动模式Demo

    在Android应用开发中,Activity是用户界面的基本组件,它负责与用户进行交互。理解Activity的启动模式至关重要,因为这直接影响到应用的行为和流程控制。本Demo涵盖了Activity的三种主要启动模式:standard、...

    Android MediaPlayer Playback---多媒体开发应用程序接口

    - 在Activity或Fragment的生命周期中,需要适当地释放`MediaPlayer`资源,防止内存泄漏。通常在`onDestroy()`或`onStop()`中调用`release()`。 8. **多媒体格式支持**: - Android系统默认支持MP3、AAC、AMR、WAV...

    Android receiver 多次启动相同Activity

    在某些情况下,这可以避免重复启动Activity,但请注意,Sticky Broadcast在Android 8.0(API级别26)及以上版本已被废弃。 5. **合理使用Intent Filter**:限制BroadcastReceiver接收的Intent Filter范围,减少不必...

    获取栈顶的activity

    5. **自定义方案**:例如,可以设计一个静态变量或单例模式来保存栈顶Activity的引用,每次启动新Activity时更新这个变量。 需要注意的是,获取栈顶Activity的方法应当谨慎使用,因为这可能涉及用户隐私和安全问题...

    Android处理内存泄漏的代码例子

    有时,非Android组件(如自定义对象)可能会持有对Activity或Context的引用。确保在不再需要时断开这些引用,防止内存泄漏。可以使用弱引用(`WeakReference`)或软引用(`SoftReference`)来存储这些对象: ```...

    Android系统中Activity的四种加载模式.pdf

    Android系统中Activity的四种加载模式 Android系统中的Activity是一种非常重要的组件,它是Android应用程序的基本组成单元之一。在实际的Android应用程序中,一个Android软件往往包含多个Activity,每个Activity...

    Android基础-2(Activity)

    默认情况下,每次启动都会创建新的Activity实例,但通过设置Intent的flag或者在AndroidManifest.xml中配置启动模式,你可以改变这种行为,实现单例、栈顶复用、栈底复用等不同的启动策略。 总的来说,Activity是...

    android关闭全部activity

    ### 关闭Android应用中的所有Activity 在Android应用开发过程中,有时候我们需要实现关闭或者退出应用程序的功能,这涉及到如何优雅地管理并关闭所有正在运行的Activity。本文将详细介绍如何通过注册广播接收器的...

Global site tag (gtag.js) - Google Analytics