asyncthread를 취소해야합니다. 내 응용 프로그램에서 나는 무거운 계산을하고 있는데, 사용자가 계산을 취소 할 수있는 능력을주고 싶다. 나는 포럼에서, 당신이 할 일을 막을 수는 없으며 DoinBackground 코드 내에서 task isCancelled = true인지 확인해야한다고 읽었습니다. 그러나 그것은 저를 위해 작동하지 않습니다.android에서 비동기 작업을 취소 할 수 없습니다.
작업 자체가 훌륭하게 끝나고 작업 자체가 끝나면 올바른 데이터가 출력됩니다.
내 응용 프로그램에서는 먼저 naredi_pdf_start (view) 함수를 호출하고 작업이 실행 중일 때 close_pdf1 (view)를 호출하면 오류가 발생합니다 (뷰를 변경하고 응용 프로그램에서 내 pdf_text1을 찾을 수 없음). publishProgress - null 포인터 예외를 호출 할 때 Textview. 나는 정말로 task.cancel (true) 메소드를 사용하는 법을 모른다 (나의 경우 : start_pdf.cancel (true))).
String progress_pdf;
naredi_pdf start_pdf;
public void naredi_pdf_start(View view) {
start_pdf=new naredi_pdf();
start_pdf.execute();
}
public void close_pdf1(View view) {
if(start_pdf!=null) {
Log.v("not null","not null");
start_pdf.cancel(true);
setContentView(R.layout.other_view); //This is where
//I don't have TextView pdf_text1
}
}
private class naredi_pdf extends AsyncTask<Void, String, Void> {
protected Void doInBackground(Void... ignoredParams) {
progress_pdf="Calculating Statistical Data";
//A LOT OF CODING
for(int i = 0; i < 1; i++) {
if(isCancelled()) {
break;
}
else {
publishProgress("Calculating team statistics");
}
}
//MORE OF CODING
for (int i = 0; i < 1; i++) {
if (isCancelled()) {
break;
}
else {
publishProgress("Calculating player's BIO");
}
}
//MORE OF CODING
for (int i = 0; i < 1; i++) {
if (isCancelled()) {
break;
}
else {
publishProgress("Calculating player's individual performance");
}
}
return null;
}
protected void onPostExecute(Void array) {
//saving to database
}
protected void onProgressUpdate(String... values) {
progress_pdf=values[0]+"\n"+progress_pdf;
if (isCancelled()) {
}
else {
TextView pdf_text1 = (TextView) findViewById (R.id.pdf_text1);
pdf_text1.setText(progress_pdf);
// dialog(view);
}
}
}
고마워. 내게 잘 됐어. – SREEJITH