【问题标题】:Side effects of activity no longer visible?活动的副作用不再可见?
【发布时间】:2011-04-21 16:21:42
【问题描述】:

我编写了一个简单的应用程序,通过文本转语音读取一页文本。它原则上有效,但现在我需要以对最终用户有意义的方式实现 onPause()、onResume() 等。

特别是关于 onPause() 我有 2 个选项:

  1. 暂停阅读,目的是 从左边开始继续。
  2. 正常继续,就好像 活动仍然可见。

第二个选项看起来更明智,因为如果它不是视觉活动,为什么要让视觉障碍干扰言语?

但是,我不确定在将 onPause() 实现为“无操作”功能时是否必须考虑其他系统范围的注意事项(“副作用”)。

除了在 Activity 不再可见时调用 onPause() 之外,在决定是否停止文本转语音时,是否还有其他事件或副作用需要考虑?

【问题讨论】:

    标签: android text-to-speech activity-lifecycle onpause


    【解决方案1】:

    唯一想到的是系统内存不足。如果系统需要内存,系统可以将看不见的活动杀死。我建议做的是使用长期运行的服务而不是活动。让活动管理服务,但让服务处理文本的阅读。如果您仍想使用 Activity,我相信您可以设置一个设置,以使杀死看不见的 Activity 成为最后的手段。

    【讨论】:

    • @Spidy 如果系统内存不足,则调用 onDestroy(),此时我肯定会停止语音。我唯一的争论是关于 onPause() 和 onStop()。
    • @an00b 您可能想查看活动生命周期图。 onDestroy() 不会被调用。活动将终止,阅读器将停止,但不会调用 onDestroy()
    • @Spidy 感谢您指出我的错误。我现在正在查看活动生命周期图,我看到另一方面,肯定会调用 onStop()。正确的?所以问题仍然是关于 onPause()。
    • @an00b 对不起,你是对的。应用程序在隐藏 Activity 之前肯定会点击 onStop()。我在想 Activity 会在 onPause() 处被杀死,但在这种情况下,Activity 仍会显示。
    • @an00b 这意味着如果另一个 Activity 覆盖当前 Activity 但没有完全阻止它(即:弹出框)并且系统由于任何原因耗尽内存,则部分的 Activity hidden 并且只通过 onPause() 将被杀死而不移动到 onStop()
    【解决方案2】:

    如果你被电话(或其他人听的东西)打断,你就不想继续发出声音了。

    【讨论】:

    • 好点。是否可以在 onPause() 中检查中断我活动的事件的类型,并据此决定是停止还是继续?
    • 您可以在 onPause() 中检查手机的状态以查看它是否被呼叫,但在更一般的意义上,似乎没有明显的方法。
    猜你喜欢
    • 1970-01-01
    • 2011-02-04
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    相关资源
    最近更新 更多