2

プログラムを実行した後、Logcatはいくつかのエラーを表示します(画像)。しかし、その後、プログラムは問題なく実行および動作します。問題がどこにあるのか理解できません。

プログラムの実行後、スクリーンショットが5秒間表示され、その後、メニュー(アクティビティ名はScroll_View)が表示されます。これで、LogCatにエラーが表示されます。ただし、各ボタンをクリックすると、クラスなどがなくても問題なく動作します。

大切ですか?

これはスレッドのコードです:

protected boolean _active = true;
    protected int _splashTime = 5000;
    @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("mobilesoft.asia.malaysia_directory.SplashScreen.Scroll_View"));
                        stop();
                    }
                }
            };
            splashTread.start();
        }

ここに画像の説明を入力してください

4

2 に答える 2

5

この例外が発生するのは、Thread のメソッドstop()およびstop(Throwable)が非推奨であり、使用すべきではないためです。

この方法でスレッドを停止することは安全ではなく、アプリケーションと VM が予測できない状態になる可能性があるためです。

于 2011-07-26T14:30:06.960 に答える
2

スクリーンショットは、SplashScreen.java クラスで Thread.stop() を呼び出していることを示しています (35 行目)。Thread.stop()これらは古く、安全ではなく、JVM に悪影響を与える可能性があるため、しばらく非推奨になっています (http://download.oracle.com/javase/1.4.2/docs/guide/misc/threadPrimitiveDeprecation.html)。どうやら Dalvik VM はこれらのスレッド メソッドをサポートしていないようです。呼び出しを別のものに置き換えることができるはずThread.stop()です-リンクには、これらのメソッドを呼び出す代わりにどのようにすべきかについてのかなり良い例があります.

于 2011-07-26T14:33:26.577 に答える