Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从一个活动中发现另一个活动已终止_Java_Android - Fatal编程技术网

Java 如何从一个活动中发现另一个活动已终止

Java 如何从一个活动中发现另一个活动已终止,java,android,Java,Android,我有两项活动 活动A具有更新静态通用列表的注册接收者 活动B访问活动A中的静态通用列表 问题是: 如果活动A结束(被系统终止),注册的接收器将停止,这使得静态通用列表中的数据不可靠,因为它取决于要更新的注册接收器 最大的问题是静态泛型列表没有随着注册的接收者一起终止(null/zero),尽管它们都是由同一个活动创建的 因此,我无法知道,在创建活动B时,我的静态泛型列表已变得不可靠,无法用新数据重新加载它 此外,也没有办法-侦听器-侦听已注册的接收方终止,在这里我已经终止了通用静态列表,并在活动

我有两项活动

活动A具有更新静态通用列表的注册接收者

活动B访问活动A中的静态通用列表

问题是:

如果活动A结束(被系统终止),注册的接收器将停止,这使得静态通用列表中的数据不可靠,因为它取决于要更新的注册接收器

最大的问题是静态泛型列表没有随着注册的接收者一起终止(null/zero),尽管它们都是由同一个活动创建的

因此,我无法知道,在创建活动B时,我的静态泛型列表已变得不可靠,无法用新数据重新加载它

此外,也没有办法-侦听器-侦听已注册的接收方终止,在这里我已经终止了通用静态列表,并在活动B创建中检查它,如果它为null,我将重新加载新数据

正如您所知,不能保证在系统终止活动时调用onDestroy,否则我会终止通用静态列表

我甚至向活动a添加了一个静态布尔变量(mAlive),该变量有一个默认值(false)并在onCreate中变为(true),希望当活动a被销毁时,(mAlive)将变为false(其声明中的默认值),我可以在活动B中检查,以了解注册的接收器已终止,数据不可靠,并再次重新加载,但事实证明,即使销毁活动A,也不会将静态布尔值(mAlive)重置为其默认值(false)

所以,请给我任何建议,在过去的两周里,我一直在努力寻找解决方案


谢谢

您可以从所需活动的
ondestory()
方法启动广播()。然后在所需的活动中接收广播。

您可以将数据放入单独的对象中,这样您就不会在活动a的生命周期中陷入困境。您可以在Finder部分看到一个示例

我认为您可以通过活动a和B扩展父活动。在父活动中,您可以将接收者注册到其
onResume
方法中,然后将其注销到其
onPause
方法中。通过这种方式,您应该始终将接收者注册到当前活动

然后,如果您已经阅读了上一个链接,如果您让查找器负责保存您的新数据,并将其引用到父活动中(因此您同时引用了活动a和活动B),那么您应该充分确保当前活动活动引用的变量不会被系统破坏


我不确定是否理解了您的需求,请告诉我您似乎误解了

一次只能运行一个活动。当新活动启动时,当前活动将暂停,您无法从其他活动直接访问一个活动中包含的任何内容。静态变量可以保存简单的数据,但不建议将其作为避免处理活动生命周期的方法

要在活动之间传递数据,可以使用意图和附加值。


如果您希望两个活动共享相同的数据,您可以使用包含可从两个活动访问的数据的。谢谢,但我在问题中没有提到,当系统销毁活动时,onDestroyed不一定会被调用?谢谢。。。那么更新数据的注册接收者呢?它也将是这个单独对象的一部分吗?如果这个对象被系统破坏,注册接收者和通用静态列表都会被终止,这能保证吗?你推荐什么样的对象?谢谢Fire手套,我会检查第一个建议和它的链接,然后再给你回复。。。作为第二个建议,我忘了提到我也尝试过它(两个活动都源自于它的基本活动,但我面临相同的问题,因为接收者将注册两次,或者注册到其中一个活动的实例,这导致了相同的问题)。编辑,你的第二个建议,我说它不合适,可能是可能的,因为您使用的onResume和onPause与我所使用的不同。。我也会尝试一下。我只建议了一件事,如果你愿意,你应该尝试一下我建议的所有东西。我可以从活动中访问服务中的通用列表吗?@谢谢你,库夫斯,非常感谢。Binder类真的非常有用,在你看来,如果我在服务中使用公共静态通用列表并直接访问它,它与Binder相比是否有副作用/负面影响?我个人会避免使用静态变量,但有时会有一个有效的用例。