2 csdn576038874 csdn576038874 于 2016.01.22 11:55 提问

android中 activity启动 和数据的传递问题

有以下两个activity 简称 A B 。A是主界面,在A中的onDestory方法中,我删除了用户的临时数据,A里面有一个按钮 可以启动到B 在B里面查询一些数据 然后吧数据传递给A,A获取到数据之后,吧数据显示在A界面上,问题是:当B获取到数据之后,用startActivity(intent)启动到A 把数据传递过去的话 ,这样A就会重新创建一个实例,当我再次按back键返回到B时重新查询数据,这时A就调用了onDestory方法 就把临时的数据删除了,不符合我的要求,我要的是当应用退出时才删除用户的临时数据,此时的情况只是从显示好数据的A 返回到了B 就把用户的临时数据删除了!我用了以下方法 :startactivityForresult 但是这样的话,A启动到B B查询到数据后 直接finish掉,A才以在OnActivityResult中获取到B传来的数据 此时用户点back键 应用就直接退出了,并不能返回到B 查询其他的数据了,不符合我要求!如果改变A的启动模式 也不行,singTask,和singleTop的话当A获取到数据显示好后 ,用户想点击返回键,返回到B 查询其他数据就不行了,就会直接退出应用,也不符合要求!

4个回答

91program
91program   Ds   Rxr 2016.01.22 12:03
已采纳

activity 的特性决定了它退出时,activity 内的数据就被销毁了。
如果你不想受 activity 的限制,可以考虑使用 Service 来做数据的保存,以在 activity 退出后数据不被销毁。

u014071947
u014071947   2016.01.22 12:05

生命周期中 还有一个onresume方法,可以试试看的。我也不太确定能不能行

Mr_dsw
Mr_dsw   Ds   Rxr 2016.01.22 12:19

你还是没理解startActivityForResult的用法, 在B中通过setResult即可,然后关闭B

crazy1235
crazy1235   Ds   Rxr 2016.02.01 13:37

你自己的逻辑有问题。完全可以通过**startResultForResult() **来实现。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Acitivity在singleTask加载模式下的数据传递处理
在Android开发中,我们通常要在不同页面之间传递数据,比如要从ActivityA启动ActivityB并传递数据到ActivityB里面,这个很简单,用Intetn加Bundle就可以了。不过有时候如果您需要让后台运行的Activity回到前台并传递数据就有些问题。     通常,我们通过Intent启到Activity的时候,就算存在一个相同的正在运行的Activity,系统都会创建一
【Android开发】启动Activity并传递信息
启动一个activity以及在activity之间传递信息
android中获取前一个Activity传递过来的参数获取不到的问题
问题:同样的也是在昨天,想要获取前一个界面传递过来的数据设置为该界面的Title获取不了,打Log显示为null。 原因:通过Intent传递过来的数据,获取是在Bundle里面得到的,原来固定的以为只能是在OnCreate方法中才能获取得到前一个Activity传递过来的数据,然后在另外一个与OnCreate方法同级别的方法中想要获取到它内部的数据获取不到,因为在执行OnCreate方法的同时
Android activity 之间的数据传递 bundle
activity之间的数据传递和
android中使用两个intent使数据在两个Activity中传递
在不同活动之间传递数据的方法。
android:Activity数据传递之全局对象(application)
在activity之间数据传递中还有一种比较实用的方式,就是全局对象application Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系统的一些信息。 Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Applica
android 中Service 和activity之间的数据传递的几种方法
1、原始数据类型:        在Activity/Servier之间传递临时性的原始数据,可以使用Intent的putExtras方法来传递数据。若传递的数据需要长久保存,则使用SharedPreference类来完成。 2、传递对象。       当在Activity/Servier之间传递不需要长久保存的对象时,可以使用以下几种途径:     (1)通过Applic
安卓-----打开新的Activity,并传递若干个参数给它
第一种传递参数: 1、布局文件activity_main.xml文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_pare
EventBus代替Intent将复杂对象传递给下一个即将启动的Activity
我觉得EventBus确实非常好,把我们从序列化中解脱出来,即使不序列化也能在界面间传递数据,但是有个前提,那是两个界面都已经存在并且注册了EventBus。而即将启动的下一个Activity就非常尴尬地不方便使用EventBus。当我们想给即将启动的界面传递参数时,一般都是用intent,但是复杂参数是需要序列化才能够传递的,如果你实在不想序列化,可能你就得像这样做了: 调用startActi
Activity与Fragment数据传递之Fragment之间获取数据
在Activity中加载Fragment的时候,有时要使用多个Fragment切换,并传值到另外一个Fragment,也就是说两个Fragment之间进行参数的传递,有两种实现方法:一种是通过共同的Activity传递、这种方法是在Activity里面添加一个字段、来临时保存要一些值,Fragment的API提供了另外一个方法来传递,就像Activity一样便捷的实现参数传递程序中的一段代码,是通