![](/img/trans.png)
[英]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.