アプリが起動する前に3秒間会社名を表示するスプラッシュ画面(ロゴアクティビティ)があります。スレッドからメインアクティビティを開始します。コードは次のとおりです。
public class Logo extends Activity {
Thread t;
public boolean dead = false;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.logo);
t = new Thread() {
public void run() {
try {
Intent i = new Intent(Logo.this, Main.class);
Thread.sleep(3000);
if (!dead) {
startActivity(i);
}
finish();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
t.start();
}
メインアクティビティは動作中のスレッドから呼び出されますが、これは正しいですか?このコード(を使用runOnUiThread
)との違いは何ですか?
...
if (!dead) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Intent i = new Intent(Logo.this, Main.class);
startActivity(i);
}
});
}
...
デバッグモード(同じスレッド、同じ操作など)のこのコードとの違いはわかりません。どちらが正しい?