я столкнулся вопрос с отменой моего AsyncTask ..Отменяя AsyncTask
Я думаю, что моя проблема может быть простой, но я не могу понять, как его код.
Я использую
while(!isCancelled())
в моей doinbackground, но проблема в том, что AsyncTask никогда не загружает на пост выполнить и единственный способ прервать это нажать кнопку отмены на моем диалоге прогресса.
мне нужно, если я нажмите кнопку, чтобы отменить AsyncTask отменить, и если я не нажимал отменить это должно действовать нормально (где! Проверка isCancelled() никогда не срабатывает)
поэтому он никогда не заканчивается нормально ,
protected Void doInBackground(Void... params) {
// Create the array
while(!isCancelled())
{
UsersPostsGet = new ArrayList<UsersPostsGet>();
try {
// Locate the class table named "Country" in Parse.com
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(
mainroadfrom.replace(" ", "")
+ mainroadto.replace(" ", ""));
// Locate the column named "ranknum" in Parse.com and order list
// by ascending
//
Date midnight = new Date();
midnight.setHours(0);
midnight.setMinutes(0);
midnight.setSeconds(0);
Date elevenfiftynine = new Date();
elevenfiftynine.setHours(23);
elevenfiftynine.setMinutes(59);
elevenfiftynine.setSeconds(59);
query.whereGreaterThan("createdAt", midnight);
query.whereLessThan("createdAt", elevenfiftynine);
query.orderByDescending("createdAt");
Time dtNow = new Time();
dtNow.setToNow();
ob = query.find();
for (ParseObject country : ob) {
int hoursnow = new Date().getHours();
int minsnow = new Date().getMinutes();
int sumnow = hoursnow * 60 + minsnow;
int hourspost = country.getCreatedAt().getHours();
int minspost = country.getCreatedAt().getMinutes();
int sumpost = hourspost * 60 + minspost;
int total = sumnow - sumpost;
int i = total/60;
int j = total % 60;
if (i == 0) {
if (j <= 1) {
x = j + " Minute";
}
else {
x = j + " Minutes";
}
}
else {
if (j <= 1) {
x = i + " Hour " + j + " Minute";
}
else {
x = i + " Hours " + j + " Minutes";
}
}
ParseFile image = (ParseFile) country.get("imageattach");
UsersPostsGet map = new UsersPostsGet();
map.setUsername((String) country.get("username"));
map.setUserpost((String) country.get("userpost"));
map.setId((String) country.getObjectId());
map.setStatus((String) country.get("status"));
map.setReport((String) country.get("report"));
map.setDisplayname((String) country.get("displayname"));
map.setPosttime(x);
if (image == null) {
map.seturl("");
}
else {
map.seturl(image.getUrl());
}
map.setIdpost(mainroadfrom.replace(" ", "")
+ mainroadto.replace(" ", ""));
UsersPostsGet.add(map);
}
} catch (ParseException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
}
return null;
}
Мой код отмены
mProgressDialog.setButton(DialogInterface.BUTTON_NEGATIVE,
"Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
RemoteDataTask.this.cancel(true);
}
});
Где код? – nKn
Я добавил его в сообщение ... моя проблема в том, что моя асинтеза никогда не заканчивается нормально для моего выполнения после выполнения, и я должен нажать кнопку отмены в своем диалоговом окне Alert, чтобы отменить ее. –
Вы также должны указать код 'isCancelled()', чтобы узнать, как вы обрабатываете отмену этого цикла. – nKn