質問には、どうなるかについての説明が必要です。 この単純なJavaコードを考えてみましょう。あなたがスレッドに渡す整数のインスタンスnはその値を保持しているため
public class myClass{
public static void main(String[] args) {
int n=2;
MyThread t=new MyThread(n);
t.start();
n=4;
System.out.println("n from main "+n);
}
}
class MyThread extends Thread{
int n;
public MyThread(int n){
this.n=n;
}
@Override
public void run(){
try{
Thread.sleep(2000);
}catch(Throwable e){
System.out.println("error :"+e);
}
System.out.println("n from thread "+n);
}
}
と出力は次のようになり、
n from main 4
n from thread 2
は、これが起こります。これはAsyncTaskで起こるのと同じことです。この動作は、静的変数をnにして、新しいスレッド内でその静的変数への参照を行った場合に変更されます。
アクティビティを終了したら、 'AsynchTask'(まだ実行中の場合)をキャンセルする必要があります。こちらをご覧くださいhttp://stackoverflow.com/a/7096045/5381331。 –