1

スレッドについて質問があります。ここで何が起こっているのかわかりません。私の理解では、進行状況ダイアログは長いアクティビティが終了するまで終了しませんが、それは起こっていることではありません。長いアクティビティを開始、終了、スピナーを閉じてから、新しいアクティビティをインテントで開始します。

 final ProgressDialog spinnerDialog = ProgressDialog.show(  
                MainScreen.this, "",  
                "Waiting for accurate (> 10 meters) GPS coordinates...Please wait. ", true);  
            new Thread(new Runnable() {  
                public void run() {  
                    //Do something that takes a while
                    spinnerDialog.dismiss();  
                    return;  
                }  
            }).start();

              Intent tvi = new Intent();
              tvi.setClass(getInstance(), TabbedView.class);
              startActivity(tvi);
4

1 に答える 1

0

新しいアクティビティの開始は、メイン (UI) スレッドで行う必要があります。ただし、新しいスレッドを開始した後にコードを記述するだけでは、意図を作成するために必要なすべての情報が得られるとは限りません。ハンドラーの使用をお勧めします

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    progress = (ProgressBar) findViewById(R.id.progressBar1);
    handler = new Handler();
    startprogress();
}

public void startProgress(View view) {
    // Do something long
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            //do long stuff (like getting info for intent)
            handler.post(new Runnable() {
            @Override
            public void run() {
                //make new intent
                //start new activity with intent you just made
            }
        });
        }
    }
    };
    new Thread(runnable).start();
}

}

さらに重要なのは、ハンドラーに関する開発者ページへのリンクです: http://developer.android.com/reference/android/os/Handler.html

于 2012-05-01T01:58:19.700 に答える