我正在使用套接字,而即时通信工具使用Asynctask在后台连续获取数据。
我使用publishProgress()将这些数据发送到onProgressUpdate(),我想知道是否有一种方法可以从函数onProgressUpdate()获取数据或将其发送到另一个类,因为我确实需要在另一个类中使用这些数据。至少,这是可能的吗?
我有一个.java,在这个.java中我有两个公共类:
第一个是一个类,在这个类中我在后台使用这个异步任务来获取套接字信息。
在第二个公共类中,我使用OpenGL,并且我需要使用该数据。
谢谢
发布于 2017-03-02 03:42:11
当然这是可能的。定义在doInBackground()和onProgressUpdate()之间传递的数组的类型。您可以只发布进度并以这种方式使用它。
new AsyncTask<...,MyDataObject,...>() {...}.execute();或者,您可以在运行dIB()的线程和正在使用它的线程之间创建一个发布-订阅接口。
并不是说AsyncTask不适合用于长时间运行的操作。这意味着它是相对较快的一次射击。您需要考虑在一个专用的执行器上运行您的任务,以免阻塞默认情况下用于所有其他AsyncTask实例的一个串行执行器。例如,
executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);发布于 2017-03-02 03:40:23
您可以使用publishProgress()方法来实现这一点,您可以从doInBackground()调用此方法,并且可以在需要获取数据时随时调用此方法。
然后从params获取您想要的数据,并将其存储在Asynctask的公共变量中,然后从另一个类访问它。
这可能是工作。
https://stackoverflow.com/questions/42540200
复制相似问题