【问题标题】:I want to run a thread in my application that will run for the entire time while the user is online. I cant choose variant我想在我的应用程序中运行一个线程,该线程将在用户在线时一直运行。我不能选择变体
【发布时间】:2021-11-15 06:11:48
【问题描述】:

我想防止线程在活动之间的转换期间停止,并在我的应用程序启动期间调用此线程。我有一个选择,我想分享它。到目前为止,我已经停止编写一个包含我需要执行的流的开头的 android 服务。然后在继承自应用程序类的类中调用它。需要注意的是,我的线程每分钟都会将某些数据发送到数据库。或许您可以提出一种更可靠、更流行的方法来解决问题。

【问题讨论】:

  • 请澄清您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: java android multithreading


【解决方案1】:

线程不会在活动之间停止。那是不可能安全地做到的——除了线程本身之外,任何人通常都不能安全地停止线程,而没有数据损坏或死锁的风险。所以Android甚至没有尝试。 (您可以从另一个线程中取消一个线程,但这可以通过设置一个标志并希望您要取消的线程偶尔查看它以兑现它来实现。)

真正的问题是双重的

1)你怎么知道线程是否已经在运行,所以你不会再次启动它。这可以通过多种方式解决。

2)当应用程序在后台时,您希望线程工作吗?这是真正的问题,因为 Android 会定期杀死后台应用程序,这将结束线程。在 Android 中,没有可靠的方法可以让线程在后台持续运行。在这里,您最好的选择是运行前台服务以保持应用程序处于活动状态,或者不使用线程并使您的应用程序甚至不被驱动(例如,每 15 分钟设置一个重复警报然后运行)。

【讨论】:

  • no no no 我希望流仅在用户的应用程序当前正在运行时工作。当应用程序完成其活动时,流程停止
猜你喜欢
  • 2010-11-27
  • 1970-01-01
  • 2012-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
相关资源
最近更新 更多