Articles of android asynctask

如何在Android中完全杀死/删除/删除/停止AsyncTask

我制作了一个从我们的服务器上下载video的应用。 问题是: 当我取消下载时,我打电话: myAsyncTask.cancel(true) 我注意到, myAsyncTask在调用cancel时没有停止…我的ProgressDialog仍然上升,就像从状态跳转到状态一样,向我显示每次取消并通过单击下载按钮再次启动AsyncTask时,新的AsyncTask启动…每次我点击下载..然后取消,然后再次下载一个单独的AsyncTask启动。 为什么myAsynTask.cancle(true)没有取消我的任务? 我不再想要它了。 如果我点击取消,我只想完全关闭它。 怎么做 ? 编辑: 感谢gtumca-MAC,以及帮助我​​的其他人做到了: while (((count = input.read(data)) != -1) && (this.isCancelled()==false)) { total += count; publishProgress((int) (total * 100 / lenghtOfFile)); output.write(data, 0, count); } 谢谢!!!

Android AsyncTask [无法在未调用Looper.prepare()的线程内创建处理程序

我已经基于一个函数创建了一个图像上传asynctask。 上传后,我在onPostExecute上收到此错误。 我在Runnable上读了一些Stackoverflow的答案,但我仍然不断地一遍又一遍地得到错误,尽管实现了不同的解决方案。 我的代码: class uploadFile extends AsyncTask { private ProgressDialog pDialog; /** * ——————————————————————– * ——————————— Before starting background thread * Show Progress Dialog * */ @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(MainActivity.this); pDialog.setMessage(“Uploading file”); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show(); } /** * ——————————————————————– * ——————————— getting all recent articles and * showing […]

如何将上下文传递给AsyncTask?

我想在后台任务完成时预先形成Toast ,只是为了让用户知道它已经完成了。 我为我的asyncTask创建了一个新类,但我不能在这个类中使用getApplicationContext() 。 我正在使用task.execute(getTempFile(this), getApplicationContext()); 运行任务。 getTempFile返回一个File对象,我试图将上下文作为Context对象传递。 我的Task类有3个variablesAsyncTask所以上下文在第二个对象中。 但是,这会导致应用程序崩溃。 编辑 public class LocationActivity extends Activity implements LocationListener { protected void handleImage(Bitmap thumbnail){ PushDataToServer task = new PushDataToServer(); task.execute(getTempFile(this), getApplicationContext()); } } public class PushDataToServer extends AsyncTask { Context context; @Override protected Integer doInBackground(Object… params) { // TODO Auto-generated method stub this.context = (Context) params[1]; […]

从Android中的另一个类调用方法时,“没有封闭的types实例”错误

同事们,我有这样的问题:1。在我的第一堂课我有 public class parseYouTubeAndYahoo extends AsyncTask<String, Void, List> 解析来自互联网的数据。 但我需要从另一个类调用此类的execute()方法。 在尝试修改此类代码时: new MainActivity.parseYouTubeAndYahoo().execute(“someURL”); 我有来自Eclipse的下一条错误消息 不能访问types为MainActivity的封闭实例。 必须使用MainActivitytypes的封闭实例限定分配(例如,xnew A(),其中x是MainActivity的实例)。 真的,这个问题笼罩在迷雾中。 那么,如何从另一个类调用此方法?

我应该给构造函数或AsyncTask.execute(params)提供params吗?

我试图弄清楚为什么Android的AsyncTask通过execute提供参数,以及为什么传递给构造函数似乎没有完成(至少在文档中)。 这是我认为最有意义的方式(当然,我正在使用的实际任务不仅仅是一个总和计算器): public class FooTask extends AsyncTask { private ProgressBar progressBar; private int[] data; public FooTask(ProgressBar progressBar, int… data) { this.progressBar = progressBar; this.data = data; } protected void onPreExecute() { progressBar.setMax(data.length); progressBar.setProgress(0); } protected Long doInBackground(Void… _) { long sum = 0; for (int i = 0; i < data.length; i++) { sum += […]

Android:如何从不同的类文件运行asynctask?

当我在一个类文件中使用我的代码时,它运行完美: package com.example.downloadfile; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.widget.TextView; public class DownloadFile extends Activity { public static final int DIALOG_DOWNLOAD_PROGRESS = 0; private ProgressDialog mProgressDialog; private static String fileName = “yo.html”; private static String fileURL […]

Android ProgessBar在加载WebView时

在我的应用程序中,我有一个WebView ,它从Internet加载任何URL。 现在,有时由于网络速度慢,页面需要很长时间才能加载,用户只能看到一个空白屏幕。 我希望在WebView加载时显示ProgressBar并在WebView加载时隐藏ProgessBar 。 我知道如何使用ProgressBar和AsyncTask ,但这是我的问题。 这是我用来加载WebView的代码。 mWebView = (WebView) findViewById(R.id.webview); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebViewClient(new HelloWebViewClient()); mWebView.loadUrl(web_URL); 这是我的自定义WebViewClient类 private class HelloWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } 现在,如果我尝试使用AsyncTask显示ProgressBar那么我想我必须给代码加载我的AsyncTask的doInBackGround()函数中的URL并通过onProgressUpdate()函数显示进度。 但是,如何在doInBackground()内部加载URL,因为doInBackground()在非UI线程上运行,并且我无法在其中使用mWebView.loadUrl(web_URL) 。 有什么建议么? 我错过了一些明显的东西吗 请指导我。

Handler,Runnable和Threads有什么不同?

Handler,Runnable和Threads有什么区别? 当我使用android时,我需要在后台运行一些东西。 我使用Threads来运行它。 通常我会编写一个扩展Thread的类并实现run方法。 我还看到了一些可以运行的implments并将runnable传递给Threads的例子。 不过我还是很困惑。 有人能给我一个明确的解释吗? 如果可以在Thread的run方法中编写后台代码,那么Runnable有什么意义呢? Handler如何在内部线程中使用,为什么我们需要使用它。 Android还有另一个调用runOnUiThread的东西,我们如何使用它? 我知道它用于更新UI。

如何在AsyncTask中提高Toast,我被提示使用Looper

我在后台完成了AsyncTask完成的任务。 在某些时候,我需要发出一个完成某事的Toast。 我试过但我失败了因为Caused by: java.lang.RuntimeException: Can’t create handler inside thread that has not called Looper.prepare() 我怎样才能做到这一点?

命名AsyncTask的线程

是否可以为AsyncTask的后台线程命名,就像Java中的普通线程一样: Thread(Runnable target, String name) 我已经看到了AsyncTask的代码,默认构造函数只是默认给出一个名称 private static final ThreadFactory sThreadFactory = new ThreadFactory() { private final AtomicInteger mCount = new AtomicInteger(1); public Thread newThread(Runnable r) { return new Thread(r, “AsyncTask #” + mCount.getAndIncrement()); } }; 我想这样做,因为当我调试时,我想知道哪个Asynctask正在访问辅助类中的方法。