0

バージョン 1.6 以降で動作するアプリを作成しましたが、電話を 4.0.4 に更新すると、次のエラーが表示されます。残念ながら、テストが停止し、まったく実行されません。なぜこれが起こったのかについて何か理由はありますか?新しいバージョンで動作させるには、コーディングの何かを変更する必要があるのでしょうか? パッケージcom.droidnova.android;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;

public class SplashScreen extends Activity {
  protected boolean _active = true;
  protected int _splashTime = 5000;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    // thread for displaying the SplashScreen
    Thread splashTread = new Thread() {
        @Override
        public void run() {
            try {
                int waited = 0;
                while(_active && (waited < _splashTime)) {
                    sleep(100);
                    if(_active) {
                        waited += 100;
                    }
                }
            } catch(InterruptedException e) {
                // do nothing
            } finally {
                finish();
                startActivity(new Intent("com.droidnova.android.splashscreen.MyApp"));
                stop();
            }
        }
    };
    splashTread.start();
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        _active = false;
    }
    return true;
}

}

4

1 に答える 1

1

UI スレッドとは別のスレッドで finish() と startActivity() を呼び出していると思われます。スレッドの代わりに asynctask を使用するか、Activity.runOnUiThread() を使用します。はい、logcat が役に立ちます。

于 2012-07-18T01:08:00.950 に答える