그냥 코드를 기반으로, 그것은 당신을 표시 AsyncTask를의에 ProgressDialog.show
을 넣어 무엇을 제안 할 수 있습니다 AsyncTask를 잘못 사용하고 있습니다.
for(int i=0;i<7;i++){
((LinearLayout) Global.a.findViewById(R.id.scrollLayout)).addView(new Column(Global.a,i));
}
이것은 AysncTask에서 절대로해서는 안됩니다. doInBackground가 완료되면 다른 스레드에서 UI를 수정합니다. onPreExecute(), onPostExecute() 또는 onProgressUpdate()를 실행하면 UI 스레드에서 for 루프를 실행합니다.
가장 좋은 방법은 당신이 그것의 수행 방법을 변경해야 다음 AsyncTask를에 뷰를 추가하는 방법에 대한 의도하는 경우가. 비록 이미 여기에 추가 할 전망 xml 파일을 생성하는 것입니다.에 대한
private SomeName extends AsyncTask<Void,Column,Void>{
private Linearlayout layout;
protected void onPreExecute(Void... unused){
//UI thread
//show dialog
layout = (LinearLayout) Global.a.findViewById(R.id.scrollLayout);
}
protected void doInBackground(Void... unused){
//Background thread
for(int i=0;i<7;i++){
//create the view in the background
Column column = new Column(Global.a,i);
//call publish progress to update the UI
publishProgress(column);
}
}
protected void onProgressUpdate(Column... column){
//UI thread
//Update the UI
layout.addView(column[0]);
}
protected void onPreExecute(Void... unused){
//UI thread
//dismiss dialog
}
}
탱크가 너무 많이 있습니다. 이제 작동합니다. –