我制作了一个从我们的服务器上下载视频的应用.问题是:
当我取消下载时,我打电话:
myAsyncTask.cancel(true)
Run Code Online (Sandbox Code Playgroud)
我注意到,这myAsyncTask不会停止呼叫取消...我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);
}
Run Code Online (Sandbox Code Playgroud)
谢谢!!!
我想知道停止异步任务运行的最佳方法是什么.
我试过了
@Override protected void onCancelled() {
super.onCancelled();
mTask.cancel(true);
}
Run Code Online (Sandbox Code Playgroud)
我也试过了
asyncTaskObject.cancel(true);
Run Code Online (Sandbox Code Playgroud)
这在与事件相关联时特别有用.
但假设场景是---有4个AsyncTask.首先调用第二个,第二个调用第三个和第三个调用第四个.当用户输入活动时,没有对话框.否则我们可以在那里使用onCancel方法.当用户点击页面上的任何位置时,如果用户没有单击任何地方,则会出现对话框,但没有显示对话框,但异步任务在后台继续运行.假设用户单击"返回"按钮或导航图标到主页页面user.is取出当前活动.但异步任务继续在后台运行,最终应用程序崩溃.我已经习惯了onBackPressed中的cancel方法.但问题是你不能确定哪个任务正在运行,应用程序再次运行.
这是怎么回事?
我正在AIButton我的应用程序中使用,我有一个AsyncTask在AIButton被点击后执行并接收一些命令并且AsyncTask有时需要太长时间才能执行.
这是我的代码:
final AIConfiguration config = new AIConfiguration("xxx",
AIConfiguration.SupportedLanguages.English,
AIConfiguration.RecognitionEngine.System);
listenButton = (AIButton) findViewById(R.id.micButton);
config.setRecognizerStartSound(getResources().openRawResourceFd(R.raw.test_start));
config.setRecognizerStopSound(getResources().openRawResourceFd(R.raw.test_stop));
config.setRecognizerCancelSound(getResources().openRawResourceFd(R.raw.test_cancel));
listenButton.initialize(config);
listenButton.setResultsListener(this);
Run Code Online (Sandbox Code Playgroud)
这是AsnycTask:
class translate extends AsyncTask<String, Void, String> {
String translatedText = "";
@Override
protected void onPreExecute() {
super.onPreExecute();
loading.setMessage("Loading");
loading.show();
}
@Override
protected String doInBackground(String... params) {
String text = params[0];
String toBeConvertedIn = params[1];
Log.d("TEXT", text);
Log.d("TBCI", toBeConvertedIn);
try {
String encodedText = URLEncoder.encode(text, "UTF-8");
HttpHandler httpHandler = new HttpHandler();
String url = "https://translate.yandex.net/api/v1.5/tr.json/translate?key=xxxxxxx&text=" …Run Code Online (Sandbox Code Playgroud)