【问题标题】:Android studio AsyncTaskAndroid 工作室 AsyncTask
【发布时间】:2017-07-21 06:43:48
【问题描述】:

我正在使用套接字,并且我正在使用 Asynctask 在后台连续获取数据。

我用publishProgress()将此数据发送到onProgressUpdate(),我想知道是否有办法从函数onProgressUpdate()获取数据或将其发送到另一个类,因为我确实需要使用它数据在另一个类中。至少,这可能吗?

我有一个 .java,在这个 .java 中我有 2 个公共类:

第一个是我在后台使用此 Asynctask 获取套接字信息的类。

在第二个公共类中,我使用 OpenGL,我需要使用该数据。

谢谢

【问题讨论】:

  • 所以你想在后台进程不完整的时候做这个,对吧?
  • 是的,在 OpenGL 类中获取 publishProgress 数据

标签: android android-asynctask parameter-passing


【解决方案1】:

当然可以。您定义在doInBackground()onProgressUpdate() 之间传递的数组的类型。您可以发布进度并以这种方式使用它。

new AsyncTask<...,MyDataObject,...>() {...}.execute();

或者,您可以在运行dIB() 的线程和正在使用它的任何线程之间创建一个发布-订阅接口。

并不是说AsyncTask 不适合用于长时间运行的操作。这意味着是一个相对快速的单发。您需要考虑在专用执行器上运行您的任务,以免阻塞默认用于所有其他AsyncTask 实例的串行执行器。例如,

executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

【讨论】:

    【解决方案2】:

    您可以使用publishProgress() 方法来执行此操作,您可以从doInBackground() 调用此方法,并且可以在需要获取数据时随时调用此方法。

    然后从params获取你想要的数据并将其存储在Asynctask的公共变量中并从另一个类访问它。

    这可能行得通。

    【讨论】:

      猜你喜欢
      • 2020-11-13
      • 2020-06-16
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多