Я использую AsyncTask для изменения текста TextView следующим образом:
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String response = "";
for (String url : urls) {
response += url;
}
return response;
}
@Override
protected void onPostExecute(String result) {
textView.setText(result);
}
}
Все будет хорошо, если я вызову его в событии OnClick:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
textView = (TextView) findViewById(R.id.txt);
Button button = (Button)this.findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new LongOperation().execute(new String[]{"Hello"});
}
});
}
Но проблема, когда я его вызвалв моей теме программа принудительно закрывалась
this.closeButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Thread t= new Thread(){
@Override
public void run(){
try{
//Do something
//Then call AsyncTask
new LongOperation().execute(new String[]{"Hello"});
}catch(Exception e){}
}
};
t.start();
}
});
Где я не прав?Я не понимаю, как разница вызова AsyncTask в потоке или нет.