초보자입니다. 답변을 명확하게 설명해주십시오. 감사합니다취소 버튼을 클릭하면 부울 값이 변경되지 않습니다 - AsyncTask - Android를 중지하는 방법?
편집 지금은 위의 코드 (편집 2) 발생 오류의
public class MainActivity extends Activity {
//other declarations
public ReadTask readTask;
protected void onCreate(Bundle savedInstanceState){
readTask = new ReadTask();
private OnClickListener test = new OnClickListener()
{
@Override
public void onClick (View V)
{
readTask.execute();
//new ReadTask().execute();
}
};
private OnClickListener cancel = new OnClickListener()
{
@Override
public void onClick (View V)
{
readTask.cancel(true);
results1.setText("");
}
확인 EDIT 1이 2 ; 감사합니다.
나는 앱에 취소 버튼이 있습니다. 이를 클릭하면 이 발생합니다.
public void onClick (View V)
{
InputMethodManager inputManager = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
new ReadTask().onCancelled();
new ReadTask().cancel(true);
results1.setText("Cancelled");
}
ReadTask 이렇게 AsyncTask를 확장;
public class ReadTask extends AsyncTask<Void, String, Void>
{
BufferedReader reader = null;
public volatile boolean isCancelled=false;
//other declarations
protected void onCancelled() {
super.onCancelled();
isCancelled = true;
new ReadTask().cancel(true);
}
@Override
protected Void doInBackground(Void... params)
{
// isCancelled=false;
try {
for(int k=x1[3];k<=x2[3];k++)
{
//bunch of code
Log.w("5.newString", newString);
String isC1 = String.valueOf(isCancelled);
Log.w("5.Is cancelled?", isC1); // at this point, VALUE IS ALWAYS FALSE !
if (isCancelled() || isCancelled == true) {Log.d("Entered","WHY");break;}
//bunch of code
} //bunch of catches
여기에는 두 개의 메소드가 있는데, 하나는 부울 변수 isCancelled이고 다른 하나는 ReadTask()입니다. cancel (true); - 둘 다 작동하지 않아. 왜?
저는 신참이기 때문에 답변을 명확하게 설명하십시오. 감사합니다
************** EDIT 1 - 로그 캣 출력 *******
11-27 17:18:56.626: W/dalvikvm(28775): threadid=1: thread exiting with uncaught exception (group=0x41bcee48)
11-27 17:18:56.636: E/AndroidRuntime(28775): FATAL EXCEPTION: main
11-27 17:18:56.636: E/AndroidRuntime(28775): Process: com.example.pingtest, PID: 28775
11-27 17:18:56.636: E/AndroidRuntime(28775): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pingtest/com.example.pingtest.MainActivity}: java.lang.NullPointerException
11-27 17:18:56.636: E/AndroidRuntime(28775): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2202)
11-27 17:18:56.636: E/AndroidRuntime(28775): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2252)
11-27 17:18:56.636: E/AndroidRuntime(28775): at android.app.ActivityThread.access$800(ActivityThread.java:139)
11-27 17:18:56.636: E/AndroidRuntime(28775): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200)
11-27 17:18:56.636: E/AndroidRuntime(28775): at android.os.Handler.dispatchMessage(Handler.java:102)
11-27 17:18:56.636: E/AndroidRuntime(28775): at android.os.Looper.loop(Looper.java:136)
11-27 17:18:56.636: E/AndroidRuntime(28775): at android.app.ActivityThread.main(ActivityThread.java:5103)
11-27 17:18:56.636: E/AndroidRuntime(28775): at java.lang.reflect.Method.invokeNative(Native Method)
11-27 17:18:56.636: E/AndroidRuntime(28775): at java.lang.reflect.Method.invoke(Method.java:515)
11-27 17:18:56.636: E/AndroidRuntime(28775): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
11-27 17:18:56.636: E/AndroidRuntime(28775): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
11-27 17:18:56.636: E/AndroidRuntime(28775): at dalvik.system.NativeStart.main(Native Method)
11-27 17:18:56.636: E/AndroidRuntime(28775): Caused by: java.lang.NullPointerException
11-27 17:18:56.636: E/AndroidRuntime(28775): at com.example.pingtest.MainActivity$ReadTask.<init>(MainActivity.java:120)
11-27 17:18:56.636: E/AndroidRuntime(28775): at com.example.pingtest.MainActivity.onCreate(MainActivity.java:39)
11-27 17:18:56.636: E/AndroidRuntime(28775): at android.app.Activity.performCreate(Activity.java:5275)
11-27 17:18:56.636: E/AndroidRuntime(28775): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
11-27 17:18:56.636: E/AndroidRuntime(28775): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2166)
11-27 17:18:56.636: E/AndroidRuntime(28775): ... 11 more
11-27 17:19:05.665: I/Process(28775): Sending signal. PID: 28775 SIG: 9
무엇을 하시겠습니까? – Broak
또한 먼저 버튼을 테스트 해 보셨습니까? 취소 전화가 실행되고 있는지 확인하려면? – Broak
버튼을 클릭 한 후 부울 값 (isCancelled)이 True로 변경되기를 원합니다. 코드의 주석도 읽어주십시오. 감사. – Zac1