Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何阻止主线程直到意图服务完成?_Android - Fatal编程技术网

Android 如何阻止主线程直到意图服务完成?

Android 如何阻止主线程直到意图服务完成?,android,Android,我看了一个关于SOF-的类似问题,但没有帮助。你没有。如果你阻止了主线程,你的手机将被冻结,最终应用程序将被终止,或者至少提示用户终止它。相反,您希望您的意图服务将结果返回给活动,并让活动跟踪返回的结果。当它们都有时,它应该进行适当的处理。但是在任何情况下都不应该阻塞主线程。您不应该。如果你阻止了主线程,你的手机将被冻结,最终应用程序将被终止,或者至少提示用户终止它。相反,您希望您的意图服务将结果返回给活动,并让活动跟踪返回的结果。当它们都有时,它应该进行适当的处理。但在任何情况下都不应阻止主线

我看了一个关于SOF-的类似问题,但没有帮助。

你没有。如果你阻止了主线程,你的手机将被冻结,最终应用程序将被终止,或者至少提示用户终止它。相反,您希望您的意图服务将结果返回给活动,并让活动跟踪返回的结果。当它们都有时,它应该进行适当的处理。但是在任何情况下都不应该阻塞主线程。

您不应该。如果你阻止了主线程,你的手机将被冻结,最终应用程序将被终止,或者至少提示用户终止它。相反,您希望您的意图服务将结果返回给活动,并让活动跟踪返回的结果。当它们都有时,它应该进行适当的处理。但在任何情况下都不应阻止主线程。

不能阻止主线程。意图服务并不意味着阻止主线程,但它作为临时后台服务工作,具有特定任务,并在任务完成时向主线程报告


所以您不能阻止,但可以放置其他逻辑,这些逻辑将在意向服务任务完成后执行。(当任务完成时,它将在广播接收器中通知,以便您可以使用广播接收器,当意图服务任务完成时将调用广播接收器).

不能阻止主线程。意图服务并不意味着阻止主线程,但它作为临时后台服务工作,具有特定任务,并在任务完成时向主线程报告


所以您不能阻止,但可以放置其他逻辑,这些逻辑将在意向服务任务完成后执行。(当任务完成时,它将在广播接收器中通知,以便您可以使用广播接收器,当意图服务任务完成时将调用该接收器)。

它在那里有答案我猜它在那里有答案我猜问题是:我需要意图服务的数据来继续执行我的主服务:)。所以,除非我知道我已经收到了数据,否则继续执行main命令是没有意义的thread@kalyanpvs-直到什么时候?。我有一个支持单例模型。我的意图服务更新它。更新完成后,我可以继续我的主要服务。我需要反复检查数据是否已更新。或者让结果接收器倒计时latch@WhoAmI然后从您所使用的任何函数返回(这样主线程就可以返回其循环器并继续处理事件)。但不要只是封锁,这会让你的应用看起来不专业,最终你会被杀。@WhoAmI你不需要持续监控。这是事件驱动编程。您不阻塞,而是等待事件——在本例中,是来自intent服务的返回。就像当你在等待用户界面时什么都不做一样,你在等待android给你打电话。@WhoAmI,直到你得到要更新的数据。.如果数据可用,则更新它,否则等待它。.不要检查,不断编写一些回调方法,并在数据可用时通知。.问题是:我需要来自intent service的数据(s) 要继续执行我的主服务:)。所以,除非我知道我已经收到了数据,否则继续执行main命令是没有意义的thread@kalyanpvs-直到什么时候?。我有一个支持单例模型。我的意图服务更新它。更新完成后,我可以继续我的主要服务。我需要反复检查数据是否已更新。或者让结果接收器倒计时latch@WhoAmI然后从您所使用的任何函数返回(这样主线程就可以返回其循环器并继续处理事件)。但不要只是封锁,这会让你的应用看起来不专业,最终你会被杀。@WhoAmI你不需要持续监控。这是事件驱动编程。您不阻塞,而是等待事件——在本例中,是来自intent服务的返回。就像在等待未阻塞的UI时不做任何事情一样,等待android给您打电话。@WhoAmI,直到您获得要更新的数据。.如果数据可用,则更新它,否则等待它。.不要选中,继续编写一些回调方法,并在数据可用时通知。。
Program structure :

Service (running in main thread) {

start intent service 1
start intent service 2

// here I have to wait until both intent services have completed. They don't return any data.
//... some code
}