【问题标题】:Android prevent restart activity after startActivityAndroid在startActivity后阻止重启活动
【发布时间】:2017-01-02 06:49:31
【问题描述】:

我对@9​​87654322@ 方法有疑问。

问题结构

  1. 使用 LinkMovementMethod 在某些 TextView 中单击链接(例如,http://google.com
  2. 回调到LinkCatcher类(因为一些TextView几乎存在所有活动,所以我使用外部类)
  3. 使用 Otto 将事件发布到 MainActivity(因为它可以防止 startActivity outside of activity 出现问题。)
  4. 在 MainActivity 上,意图 Activity B 没有任何标志,只是一个额外的(链接)
  5. 创建 Activity B 时,Activity A 将销毁并调用onCreate(Bundle savedInstanceState)(我在我的代码中插入了一些 Log.e,它肯定会重新调用 Log 代码)

尝试过的方法

  1. 在 MainActivity、Activity B 中插入 android:launchMode="singleInstance"
  2. 在 MainActivity 中插入 android:configChanges="orientation|screenSize|keyboardHidden" (这意味着方向没有问题。我已经在我的应用程序的所有活动中实现了 onSaveInstanceState) 3.remove 步骤 3. 在 LinkCatcher 类中调用 startActiivty() 代替 Post 事件到 MainActivity

我尝试了所有我尝试过的方法。而且我不知道为什么活动被破坏并重新调用 onCreate(不是 onResume),即使我不使用任何 finish() 方法。

【问题讨论】:

  • 尝试释放设备上的一些内存或创建一个具有大量内存的模拟器并检查是否有可用 RAM 有所不同,这样我们就可以排除 android 杀死活动 A 的情况。确定一次就杀死它,但我怀疑它是 android 杀死每次点击和案例的活动
  • @PopTudor 我已经在使用 3GB 内存 (Galaxy S6) 设备,并且我还使用了 2GB 内存的模拟器。但问题发生了。这就是为什么我不认为这个问题是由记忆发生的。 (即使我使用 largeHeap 选项)
  • 请发布一些代码供我们查看并检查您的 logcat。这不是标准行为,正在发生一些奇怪的事情。同时发布您的清单。

标签: android android-intent


【解决方案1】:

因为这就是 Android 的设计方式 - 在任何时候都可以杀死当前不在屏幕上的 Activity。你无法阻止它。你可以做的就是考虑到它——你可以在 onSaveInstanceState 中保存任何必要的数据,并在 onCreate 中从 Bundle 或 onRestoreInstanceState 中恢复它。

【讨论】:

  • 但我认为这是有问题的。有两种方法可以访问(使用startActivity)Activity B。一种是Navigation Drawer,另一种是从LinkCatcher类接收到的事件,当通过navigation Drawer访问时,问题没有发生
猜你喜欢
  • 1970-01-01
  • 2014-11-11
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
相关资源
最近更新 更多