有什么方法可以防止AsyncTask的doInBackground方法/线程启动,直到在onPreExecute方法期间显示的AlertDialog被取消之前?

doInBackground仅应在onPreExecute完成时运行,但是据我所知,打开AlertDialog不会阻止onPreExecute完成。

详细信息: 目前,我在手机上,无法提供代码示例,但是代码概述是,由于该应用程序必须位于电信网络中,因此该应用程序需要的数据只能通过移动数据访问。我的getData asynctask的preExec首先检查wifi是否打开,如果是,则显示带有“禁用Wifi”和“取消”选项的警报对话框。

取消应结束任务,而禁用Wifi则应禁用wifi。然后,doInBg方法检查移动数据连接是否建立,如果没有,则进入睡眠循环。一旦启动,doInBg然后获取数据...

当前,如果wifi处于打开状态,则doInBg在关闭对话框之前启动,被困在睡眠循环中,直到某种原因导致移动连接出现...这导致我想避免的潜在问题。

有帮助吗?

解决方案

您可以尝试在某个地方启动它以检查您的wifi是否可用,然后使用AlertDialogListener捕获AlertDIalog中按钮的动作。那么您可以在AlertDialogListener中启动Async。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top