0

背景を表示しながら、いくつかの操作を実行したい (スレッドを使用せずに)。

私の活動でonCreate()は、setContentView(R.layout.splash);

アプリが起動したときonStart()、レイアウトはまだロードされていません。なんで?

更新: LogCat で「アクティビティがウィンドウにリークしました」というメッセージが表示されます

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ImageView android:src="@drawable/splash"
        android:id="@+id/image"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#ffffff" />
</LinearLayout>

onCreate

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

}

onStart

@Override
protected void onStart() {
    super.onStart();


    if (CBConstants.ASSETS_MANAGER){

        String progressMsg = this.getResources().getString(R.string.progress_dialog_assets_upgrading_message);
        ProgressDialog progressDialog = ProgressDialog.show(this, null, progressMsg);

        progressDialog.show();

        try {

                            [...]

        } catch(Exception e) {
            Log.d("appcheck", ""+e);
            Intent intent = new Intent(SplashScreen.this, CBWebViewActivity.class);
            startActivity(intent);
        }


    }


    else {
        Thread noAssetManager = new Thread() {
        public void run() {
            try {

                while (splashActive && ms < splashTime) {
                    if(!paused)
                        ms=ms+100;
                    sleep(100);
                }

            } catch(Exception e) {
                if (LOG) Log.d("appcheck", ""+e);
            }
            finally {   
                Intent intent = new Intent(SplashScreen.this, CBWebViewActivity.class);
                startActivity(intent);
            }
        }
        };
        noAssetManager.start();
    }

}
4

0 に答える 0