`
liuy2012
  • 浏览: 107572 次
  • 性别: Icon_minigender_2
  • 来自: 西安
社区版块
存档分类
最新评论

activity singleInstance问题处理

 
阅读更多

好久没来记录学习了,总是忙于各种事,后面有时间了,多上来写点东西,记录自己工作遇到的问题。

1 普及下知识

Activity启动方式有四种,分别是:
standard
singleTop
singleTask
singleInstance

设置Activity的启动模式,只需要在AndroidManifest.xml里对应的<activity>标签设置android:launchMode属性

standard 默认模式,可以不用写配置

其余三种模式,可以网上搜索,一大堆介绍。

2 遇到的问题

项目中有个登录账号的界面,登录完成后,需要finish掉该activity。问题是,该activity未设置启动模式,在主界面打开了该界面,然后点击home键,之后再进入其他应用中打开该activity,进行了登录操作后,登录成功后,关闭了当前输入账号的界面,但是却又显示了空白的登录界面。。。

对于这些操作,只能设置为singleInstance启动模式,但是问题又来了:打开该界面时Intent传过来一些值,在登录完成关闭界面时,需要根据这些值来确定是否需要打开另一个界面,使用了singleInstance模式,第二次打开的该界面的值就获取不到,getIntent().getExtras()始终是第一次的值。

3 解决方法

启动模式为singleInstance,第二次打开界面时,会走onNewIntent方法,代码如下

 protected void onNewIntent(Intent intent) {  
  super.onNewIntent(intent);
  Log.d(TAG, "onNewIntent");
  setIntent(intent);
   }

通过上面方法,可以更新Intent ,就可以拿到第二次打开该界面传过来的Intent内的值。

 

问题完满解决。

分享到:
评论

相关推荐

    Android的Activity的Launch模式之SingleInstance案例

    在四种基本的启动模式中,`SingleInstance`是最特殊的一种,它不仅控制了Activity实例的创建,还影响了任务栈的管理。本文将深入探讨`SingleInstance`模式的原理、特点以及在实际应用中的案例。 `SingleInstance`...

    检测Activity的启动模式SingleInstance

    其中,"SingleInstance"启动模式是一种特殊的启动模式,它不仅控制了Activity的实例化,还涉及到应用程序的多任务处理。这篇内容将深入探讨SingleInstance启动模式的原理、特点以及如何在实际开发中运用。 首先,...

    activity横竖屏切换时销毁的处理

    - **启动模式**:使用特定的启动模式(如SingleTask或SingleInstance),也可以影响Activity如何处理横竖屏切换。 4. **捕获横竖屏切换**:如果希望在横竖屏切换时执行某些操作,可以重写`onConfigurationChanged...

    Activity四种启动模式

    每次启动此模式的Activity时,系统会检查是否存在相同任务栈中的实例,如果存在,则通过调用onNewIntent()方法来处理新启动请求,而不会创建新的Activity实例。这常用于应用的主入口点,确保每次用户进入应用都只有...

    android代码 Activity跳转

    Android提供了多种Activity启动模式,包括标准模式(Standard)、单任务模式(SingleTop)、单实例模式(SingleInstance)和单栈顶模式(SingleTask)。不同模式会影响Activity的生命周期和堆栈管理,例如: 1. ...

    Android中Activity启动模式demo

    在Android应用开发中,Activity是用户界面的基本组件,它负责展示屏幕上的内容并处理用户交互。本示例项目“Android中Activity启动模式demo”旨在帮助开发者深入理解Activity的不同启动模式,以便更好地控制应用的...

    Activity 管理器

    为了优化性能和用户体验,Activity管理器支持多种启动模式,如标准模式(Standard)、单实例模式(SingleInstance)、单任务模式(SingleTask)和单栈顶模式(SingleTop)。每种模式都会影响Activity在任务栈中的...

    Android Activity的四种加载模式区别

    在Android应用开发中,Activity是用户界面的基本单元,它负责展示屏幕内容并处理用户交互。了解和正确使用Activity的不同加载模式对于优化应用性能和用户体验至关重要。Android提供了四种不同的加载模式:standard、...

    activity完整jar包.rar

    在Android开发中,Activity是应用的核心组件之一,它负责用户界面的展示以及用户交互的处理。这个"activity完整jar包.rar"很可能包含了Android SDK中关于Activity相关类的完整集合,可能包括了Android官方库中的一些...

    Activity生命周期与启动模式

    4. **单实例模式(singleInstance)**:此模式最严格,Activity不仅在自己的任务栈中唯一,而且其任务栈中只能包含该Activity。任何启动该Activity的请求都将复用这个唯一实例,所有启动它的Activity都会进入这个...

    全面解析Android应用开发中Activity类的用法

    - `singleInstance`:在新的任务栈中启动Activity,它是唯一一个在这个任务中的Activity。 7. **Intent Flag**: 意图标志如`FLAG_ACTIVITY_NEW_TASK`和`FLAG_ACTIVITY_CLEAR_TOP`可以影响Activity的启动行为,...

    activity的四种启动模式

    如果存在,系统会把栈中位于该Activity之上的所有其他Activity全部移除,然后调用`onNewIntent()`方法,将Activity推至栈顶,这样Activity就能处理新的Intent。如果栈中没有目标Activity,系统会创建一个新的任务栈...

    Activity的launchMode测试

    - 在不同`launchMode`下,通过`startActivityForResult`启动`Activity`,观察结果处理的差异。 测试过程中,我们还需要关注以下几点: - **back stack**(回退栈)的行为:`launchMode`会影响回退键的响应,比如在...

    activity的启动方式

    在Android应用开发中,Activity是用户界面的基本组件,它负责展示屏幕上的交互元素并处理用户的输入事件。了解Activity的启动方式对于开发高效、流畅的应用至关重要。本文将详细讲解Activity的几种启动模式及其特点...

    基本程序单元Activity

    在处理Activity间的通信时,可以使用Intent传递数据,也可以利用startActivityForResult()启动另一个Activity,并在完成后通过onActivityResult()接收返回值。此外,Intent的Flag如FLAG_ACTIVITY_CLEAR_TOP或FLAG_...

    Activity之间的相互调用与传递参数

    在实际应用中,有时需要处理Activity的生命周期问题。例如,当从一个Activity启动另一个Activity时,前一个Activity可能会被系统销毁。这时,我们可以通过保存InstanceState Bundle来保存临时状态,以便在重建时恢复...

    activity生命周期

    - 使用Intent启动Activity,可以通过设置启动模式(singleTop、singleTask、singleInstance)来改变Activity在栈中的行为。 理解并熟练掌握Activity的生命周期,对于编写响应迅速、内存效率高的Android应用至关...

    详解 Android 的 Activity 组件

    在实际开发中,合理地运用Activity的启动模式(standard、singleTop、singleTask、singleInstance)可以解决许多复杂场景的问题。 最后,关于EX01这个压缩包文件,可能包含了一些示例代码或练习项目,用于辅助学习...

    Activity详细剖析之使用范例

    在AndroidManifest.xml中,可以设置Activity的launchMode属性,影响Activity的启动行为,如单实例(singleInstance)、单任务(singleTask)、单栈顶(singleTop)和标准模式(standard)。 以上就是Activity在...

Global site tag (gtag.js) - Google Analytics