Android AsyncTask에서 작업 중입니다. 프로그램을로드하는 동안 진행률 표시 줄을 만들고 싶습니다. 다음은 내가 만드는 방법입니다.AsyncTask에서 생성 된 데이터를 보존하는 방법은 무엇입니까?
A class is declared here...
private ArrayList<String> result1 = new ArrayList<String>(); //class variable
onCreate()
{
Some stuff here...
new ATask().execute();
for (int i = 0; i <result1.size();i++)
{
output = output +result1.get(i) + "\n\n";
}
textView.setText(output);
}
private void do0()
{
ArrayList<Sentence> result = new ArrayList<Sentence>();
ArrayList<String> result2 = new ArrayList<String>();
result = do1("link", true); //just some function I am working
result1 = do2(result,10);//do2 return ArrayList<String>
}
private class ATask extends AsyncTask<String, Void, String>{
private ProgressDialog progress = null;
@Override
protected String doInBackground(String... params) {
do0();
return null;
}
@Override
protected void onCancelled() {
super.onCancelled();
}
@Override
protected void onPostExecute(String result) {
progress.dismiss();
//adapter.notifyDataSetChanged();
super.onPostExecute(result);
}
@Override
protected void onPreExecute() {
progress = new ProgressDialog(ReadWebPage.this);
progress.setMessage("Doing...");
progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progress.show();
super.onPreExecute();
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
};
내 의도는 진행률 표시 줄을로드하는 동안, 그것은 do0()
을 완료 한 후 result1
을 수정할 것이라고 내 oncreate
이 TextView
을의에 result1
표시 할 것을 사용할 수 있습니다. 그러나이 설정에서는 내 TextView
이 항상 비어 있습니다. 그래서 do0()
(직후 result1 = do2()
)에
for (int i = 0; i <result1.size();i++)
{
output = output +result1.get(i) + "\n\n";
}
textView.setText(output);
를 이동하지만 프로그램이 충돌합니다. 나는이 스레드 설정에 익숙하지 않다. 사전에 도움을 주셔서 감사합니다.
감사합니다.이 코드를 더 잘 사용하는 것처럼 보이지만 샘플 코드에서 사용하는 코드를 얻습니다. 저는 지금 당장이 상황에 익숙하지 않지만 좀 더 성숙한 코딩 능력을 갖춰야 할 때 당신의 접근 방식을 생각해야합니다. 귀하의 추천에 감사드립니다. – JLTChiu