0

正如我在标题中所写:在启动应用程序后,如果我启动一个调用常用方法的线程然后等待 10 秒,并且重复此操作直到用户退出应用程序,它会导致任何性能问题吗?或者它会对其他可能具有更高优先级的线程和异步任务产生负面影响?比如,假设我有另一个由按钮触发的线程,即使主重复线程正在运行,它也必须立即执行。有人可以给我介绍一个安全的解决方案吗?

感谢您的回答,我将为您提供一个示例:我有一个按钮,预计会被按下一次,所以我每 10 秒检查一次用户是否已经按下它。但除了这个正在进行的线程之外,用户还可以触发其他短线程,例如在后台下载 100KB 文件或从外部数据库加载一些数据。因此,据我所知,不会有任何混乱,只要我愿意,我就可以拥有那个持续的线程。(这只是一个例子,我故意不使用按钮的监听器)

4

2 回答 2

0

它不会对用户体验本身产生负面影响,因为您是在 UI 线程之外运行它,所以它不应该阻止它(这是假设您的方法没有做任何事情来破坏体验)。

至于确保其他线程在它之前运行,您可以设置线程优先级,但是多线程处理是一件很挑剔的事情,而且您几乎无能为力,总是让一些其他线程在这个线程前面切入。

许多因素决定了在特定实例中执行哪个线程,其中许多因素超出了您的控制范围。VM 将尝试使执行尽可能接近您的意图,但这不是保证。即使您的线程稍微不同步,您也应该以能够正常运行的方式设计您的应用程序。

于 2013-04-27T19:52:29.633 回答
0

使用 IntentService 是您想要做的正确方法。它可能会也可能不会对性能产生影响,具体取决于您的任务的性质。

文档

IntentService 类为在单个后台线程上运行操作提供了一个简单的结构。这允许它处理长时间运行的操作,而不会影响用户界面的响应能力。此外,IntentService 不受大多数​​用户界面生命周期事件的影响,因此它会在会关闭 AsyncTask 的情况下继续运行

对并发访问感到厌烦,并确保您使用的进程是线程安全的。

于 2013-04-27T19:59:07.543 回答