[英]RequestAsyncTask of Facebook sdk not working for posting video in android
[英]How cancel RequestAsyncTask Facebook SDK 3.0?
我正在尝试取消RequestAsyncTask,当我调用方法cancel时,后台线程不会停止,因为从未调用过isCancelled方法,我该怎么办? 这是我的代码:
Request requestUpload = Request.newUploadPhotoRequest(session, imagen, requestCallback);
Bundle params = requestUpload.getParameters();
params.putString("name", "hi everyone");
requestUpload.setParameters(params);
rq = Request.executeBatchAsync(requestUpload);
progressDialog = ProgressDialog.show(getActivity(), "", "Wait please...", true, true, new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
if (rq != null) {
rq.cancel(true);
}
}
});
有两件事:
首先,我不确定您如何编译该代码,因为我希望rq必须是最终的才能在匿名OnCancelListener方法中被引用。 当我在自己的环境中复制它时,肯定是必须的。
其次,我不确定你的意思
因为从不调用isCancelled方法
调用此方法可以确定任务是否已取消,而不是取消任务。
第三,我写了类似的代码(如下),它表明当使用后退按钮取消对话框时,对isCancelled的调用返回true。
最后,编写的代码将无限期显示进度对话框,而您(大概)希望在完成请求后将其关闭。 一种实现方法是制作RequestAsyncTask的子类,并重写其onPostExecute方法以关闭ProgressDialog。
Bundle postParams = new Bundle();
postParams.putString("name", "Name");
postParams.putString("message", "Message");
postParams.putString("picture", imageURL);
Request request = new Request(fbSession, "me/feed", postParams, HttpMethod.POST, postResponseCallback);
final FacebookPostTask task = new FacebookPostTask(request);
task.execute();
facebookPostProgressDialog = ProgressDialog.show(this, "", "Posting to Facebook...", true, true,
new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
if (task != null) {
task.cancel(true);
Log.d(MainActivity.TAG, "Task cancelled? " + task.isCancelled());
}
}
});
RequestAsyncTask的子类如下所示:
private class FacebookPostTask extends RequestAsyncTask {
public FacebookPostTask(Request... requests) {
super(requests);
}
@Override
protected void onPostExecute(List<Response> result) {
super.onPostExecute(result);
facebookPostProgressDialog.dismiss();
}
}
可能会有一些更简单的方法。
请注意,即使我成功取消了任务,FB帖子似乎也已经进行了。 这可能只是我取消的速度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.