`
夏文权
  • 浏览: 242814 次
  • 性别: Icon_minigender_1
  • 来自: 贵州
社区版块
存档分类
最新评论

android onNewIntent 的用法

 
阅读更多
写道
从一个Activity启动另一个Activity并传递一些数据到新的Activity上非常简单,但是当您需要让后台运行的Activity回到前台并传递一些数据可能就会存在一点点小问题,也就说如果一个activity多次被调用,为了减少内存的消耗。

在默认情况下,当您通过Intent启到一个Activity的时候,就算已经存在一个相同的正在运行的Activity,系统都会创建一个新的Activity实例并显示出来。为了不让Activity实例化多次,我们需要通过在AndroidManifest.xml配置activity的加载方式(launchMode)以实现单任务模式,如下所示:

<activity android:label="@string/app_name"
android:launchmode="singleTask"android:name="[包名].MyActivity">
</activity>

launchMode为singleTask的时候,通过Intent启到一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法,如下所示:


protected void onNewIntent(Intent intent) {

super.onNewIntent(intent);

//必须设置新的Intent否则 getIntent()将返回原来的Intent
setIntent(intent);
//在这里调用你想调用的方法

}


要注意的是:系统可能会随时杀掉后台运行的Activity,如果这一切发生,那么系统就会调用onCreate方法,而不调用onNewIntent方法,一个好的解决方法就是在onCreate和onNewIntent方法中调用同一个处理数据的方法。




 
分享到:
评论

相关推荐

    Android onNewIntent()触发机制及注意事项

    在Android应用开发中,`onNewIntent()` 是一个重要的生命周期方法,主要负责处理在Activity已经启动并且处于前台或后台时接收到的新Intent。这个方法在特定的`launchMode`下被调用,例如`singleTask`或`...

    android onnewintent

    - **生命周期影响**:当使用`singleTask`或`singleInstance`启动模式时,若活动已经在任务栈中存在,则新的意图不会导致新实例的创建,而是通过调用`onNewIntent()`方法将意图数据传递给现有实例。 - **数据传递**:...

    onNewIntent方法的使用

    本篇文章将深入探讨`onNewIntent()`方法的使用及其在Android开发中的实际应用。 首先,`onNewIntent()`方法是在Activity已经存在且处于栈顶状态时,接收到新的Intent时被调用的。这种情况通常发生在以下几种场景: ...

    activity的四种启动模式和onNewIntent的关系

    需要注意的是,当Activity接收到新的Intent时,应当使用`setIntent(intent)`方法更新当前Activity的Intent对象,以便于后续可以通过`getIntent()`方法获取到最新的Intent数据。 **示例代码**: ```java @Override ...

    android:scheme 通过uri跳转到APP应用指定Activity

    下面我们将详细探讨如何使用`android:scheme`来实现URI跳转到APP应用指定的Activity。 首先,我们来创建自定义的URL scheme。在AndroidManifest.xml文件中,我们需要声明我们的Activity并为其设置一个唯一的scheme...

    android之searchview

    处理搜索结果时,你需要重写`onNewIntent`方法来接收`ACTION_SEARCH`意图,并调用`handleSearchIntent`方法: ```java @Override protected void onNewIntent(Intent intent) { if (Intent.ACTION_SEARCH.equals...

    android Intent的用法

    - FLAG_ACTIVITY_SINGLE_TOP:如果目标Activity已经在栈顶,不会再次创建,而是调用onNewIntent()方法。 6. 使用Intent实现Activity之间的通信: - 使用startActivityForResult()启动Activity,获取返回结果。 -...

    Android开发教程之Android系统搜索对话框(浮动搜索框)的使用--千锋培训

    你可以使用Loader或直接在`onNewIntent()`方法中处理Intent来获取搜索查询。 为了让用户能够触发搜索,你还需要在你的应用程序中提供一个调用搜索对话框的入口点。这通常是通过在选项菜单中添加一个搜索按钮,或者...

    android NFC (读取M1卡内容)

    3. **处理NFC事件**:在你的`Activity`中覆写`onNewIntent()`方法,该方法会在NFC标签被检测到时被调用。在这里,你可以通过`getTag()`方法获取到`Tag`对象,它是所有NFC标签的基类。 4. **读取M1卡的UID**:M1卡的...

    android 通知栏跳转

    为此,需要在Activity的`onCreate()`或`onNewIntent()`方法中解析Intent中的数据,并根据需要更新界面。同时,为了提供良好的用户体验,Activity可能需要配置启动模式(例如,单实例模式),以避免重复创建相同的...

    android nfc 读取深圳通

    1. 处理NFC标签事件:在`onNewIntent`方法中,接收并解析NFC标签: ```java @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); if (NfcAdapter.ACTION_TAG_DISCOVERED.equals...

    android网络编程面试题,Android面试题整理

    + 如果被启动的 Activity 所需的任务栈存在且该任务栈中存在该 Activity 的实例,那么该 Activity 不会重建,系统会调用的 onNewIntent() 方法重用该实例。 * singleInstance 单例模式: + 如果被启动的 Activity ...

    android nfc MifareUltralight读写

    以上就是Android平台上使用NFC读写Mifare Ultralight标签的基本步骤。需要注意的是,由于Mifare Ultralight的特性,它只有64个字节的存储空间,分为16个页面,每个页面4个字节。因此,在实际应用中,你需要考虑数据...

    android nfc读写实例

    `android.permission.NFC` 是使用NFC功能所必需的权限,而`android.hardware.nfc.hce`则表示你的应用支持Host Card Emulation(HCE),用于模拟NFC卡片。 接下来,我们需要创建一个NFC意图过滤器,以便在用户接触...

    Android精简面试总结

    - **行为**:如果目标Activity已经在栈顶,系统将调用该Activity的`onNewIntent()`方法而不是创建新的实例;如果不在栈顶,则行为与标准模式相同。 - **应用场景**:适用于需要处理重复启动但不希望栈顶Activity...

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

    - `singleTop`:如果目标Activity已经在栈顶,不会创建新的实例,而是调用其`onNewIntent(Intent)`方法。 - `singleTask`:如果栈中已有该Activity的实例,那么会回到该Activity,并清空其上面的所有Activity。 -...

    Android NFC读取标签UID

    本教程将详细介绍如何使用Android NFC功能读取标签的UID(唯一标识符)。 首先,我们需要理解NFC的基本概念。NFC是一种无线通信标准,工作在13.56MHz频率下,距离一般在4厘米内。它结合了射频识别(RFID)技术,并...

    Android通过NFC读取IC卡示例

    - 当NFC标签靠近设备时,`onNewIntent()`方法会被调用,你可以从中获取到`Intent`并解析出`Tag`对象。 - 通过`Tag`对象,你可以进一步访问特定的NFC技术,例如`IsoDep`,然后使用`connect()`方法建立连接,进行...

    android-Google官方nfc读卡源码

    - `onNewIntent()`方法中获取NFC标签信息,通过`getTag()`方法访问。 - 使用`Ndef`类的`getNdefMessage()`方法读取标签上的NDEF数据。 - 分析NDEF消息中的记录,每个记录包含类型、ID和payload。 5. NFC标签技术...

    Android调用系统的浮动搜索框实现搜索功能

    4. **处理搜索请求**:在onNewIntent方法中,你可以获取到用户的搜索查询,并根据查询执行相应的搜索操作。搜索结果可以通过Adapter绑定到ListView或其他视图组件上展示。 5. **配置SearchableIntent**:在需要调用...

Global site tag (gtag.js) - Google Analytics