活动的副作用不再可见?

活动的副作用不再可见?

问题描述:

我写了一个简单的应用程序,通过文本到语音朗读文本页面。它原则上工作,但现在我需要以对最终用户有意义的方式实现onPause(),onResume()等。活动的副作用不再可见?

具体有关的onPause()我有两个选择:

  1. 暂停朗读,以意向 恰好继续从左点。
  2. 正常继续,就好像 活动仍然可见。

第二个选项看起来更合理,因为如果它不是视觉活动,为什么让视觉干扰中断语音?

但是,我不确定是否有其他系统范围的考虑(“副作用”),我将onPause()实施为“无所事事”功能时必须考虑到这些因素。

除了在活动不再可见时调用onPause()时,在决定是停止还是不停止文本到语音转换时,我应该考虑其他事件还是副作用?

想到的唯一情况是如果系统内存不足。如果需要记忆,系统会消灭视线外的活动。我建议做的是使用长时间运行的服务而不是活动。让活动管理服务,让服务处理文本的阅读。如果你仍然想使用一个活动,我相信你可以设置一个设置来使你看不见的活动成为最后的手段。

+0

@Spidy如果系统内存不足,那么调用onDestroy(),此时我肯定会停止讲话。我唯一的辩论是关于onPause()和onStop()。 – an00b 2011-04-21 16:35:44

+2

@ an00b您可能想看看活动生命周期图。 onDestroy()不会被调用。活动将会消亡,读者将停止,但onDestroy()不会被称为 – Spidy 2011-04-21 16:40:35

+0

@Spidy谢谢你指出我的错误。我现在正在查看活动生命周期图,我发现onStop(),另一方面,肯定会被调用。对?所以问题仍然是关于onPause()。 – an00b 2011-04-21 16:47:17

如果您被电话(或任何人听到的)中断,您将不想继续发出声音。

+0

优秀的一点。是否可以在onPause()中检查是否中断我的活动的事件的**类型**,并据此决定是停止还是继续? – an00b 2011-04-21 16:31:55

+1

您可以在onPause()中检查手机的状态以查看它是否是调用,但是从更一般的意义上来说,似乎并没有明显的方法来做这件事。 – 2011-04-21 16:49:02