문제는 수행중인 모든 작업과 동일한 스레드에서 스플래시 화면 ( 내가 생각 하는 ProgressDialog 와 같은 일종의 대화 상자)을 실행하고있을 가능성이 큽니다 . 이렇게하면 스플래시 화면보기가 업데이트되지 않고 화면에 표시되지 않을 수도 있습니다. 시작 화면을 표시하고 AsyncTask 인스턴스를 시작하여 모든 데이터를 다운로드 한 다음 작업이 완료되면 시작 화면을 숨겨야합니다.
따라서 Activity의 onCreate () 메서드는 단순히 ProgressDialog를 만들고 표시합니다. 그런 다음 AsyncTask를 만들고 시작합니다. AsyncTask를 기본 Activity의 내부 클래스로 만들어서 Activity의 일부 변수에 다운로드 한 데이터를 저장하고 onPostExecute () 메서드에서 ProgressDialog를 닫을 수 있습니다.
코드를 보여주지 않고 더 이상 정교하게 만드는 방법을 모르기 때문에 여기에 있습니다.
public class MyActivity extends Activity {
private ProgressDialog pd = null;
private Object data = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.pd = ProgressDialog.show(this, "Working..", "Downloading Data...", true, false);
new DownloadTask().execute("Any parameters my download task needs here");
}
private class DownloadTask extends AsyncTask<String, Void, Object> {
protected Object doInBackground(String... args) {
Log.i("MyApp", "Background thread starting");
return "replace this with your data object";
}
protected void onPostExecute(Object result) {
MyActivity.this.data = result;
if (MyActivity.this.pd != null) {
MyActivity.this.pd.dismiss();
}
}
}
}
분명히 거기에 채워야 할 몇 가지 부분이 있지만이 코드가 실행되고 좋은 시작점을 제공해야합니다 (코드 오류가있는 경우 용서해주세요. 입력 할 때 Android SDK에 액세스 할 수 없습니다. 현재).
Android의 AsyncTasks 주제에 대한 더 많은 좋은 자료는 여기 와 여기 에서 찾을 수 있습니다 .