android – 如何正确使用AsyncTask

android – 如何正确使用AsyncTask,第1张

概述我想从相机表面预览中捕获帧缓冲区,并将这些缓冲区发送到另一个要在Web上某处处理/ POST的函数. Android Dev指南提供了这个示例: http://developer.android.com/reference/android/os/AsyncTask.html private class DownloadFilesTask extends AsyncTask<URL, Integer 我想从相机表面预览中捕获帧缓冲区,并将这些缓冲区发送到另一个要在Web上某处处理/ POST的函数.

Android Dev指南提供了这个示例:
http://developer.android.com/reference/android/os/AsyncTask.html

private class DownloadfilesTask extends AsyncTask<URL,Integer,Long> {     protected Long doInBackground(URL... urls) {         int count = urls.length;         long totalSize = 0;         for (int i = 0; i < count; i++) {             totalSize += Downloader.downloadfile(urls[i]);             publishProgress((int) ((i / (float) count) * 100));         }         return totalSize;     }     protected voID onProgressUpdate(Integer... progress) {         setProgresspercent(progress[0]);     }     protected voID onPostExecute(Long result) {         showDialog("Downloaded " + result + " bytes");     }}

以下是执行方式:

new DownloadfilesTask().execute(url1,url2,url3);

这个整个 *** 作是一个大的AsyncTask(换句话说,就是那个循环会坐在那里并等待每个文件同步下载),而整个任务在后台工作,或者这将为每个URL启动多个线程通过了吗?

与我的项目相关,我想在每次捕获帧缓冲区时简单地创建一个全新的AsyncTask是否合理?有点像:

//for each frame buffer i want to process:    new FrameProcessorTask().execute(byte[]);
解决方法 它是循环数据的一个线程.

你也可以做后者.

使用第二个选项,您需要考虑堆大小,因为手机只有有限的内存和许多并行线程,所有在大缓冲区中下载可能会超出可用内存.

总结

以上是内存溢出为你收集整理的android – 如何正确使用AsyncTask全部内容,希望文章能够帮你解决android – 如何正确使用AsyncTask所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1121773.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存