Android, LogCat показывает эту ошибку: «Устаревшие методы потока не поддерживаются», Что это? - PullRequest
2 голосов
/ 26 июля 2011

После запуска программы 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();
        }

enter image description here

Ответы [ 2 ]

5 голосов
/ 26 июля 2011

Вы получаете это исключение, потому что методы потока stop() и stop(Throwable) устарели и никогда не должны использоваться.

Поскольку остановка потокатаким образом небезопасно и может оставить ваше приложение и виртуальную машину в непредсказуемом состоянии.

2 голосов
/ 26 июля 2011

На снимке экрана показано, что вы вызываете Thread.stop () в классе SplashScreen.java (строка 35). Thread.stop() устарело некоторое время, потому что они старые, небезопасные и могут оказывать негативное влияние на JVM (http://download.oracle.com/javase/1.4.2/docs/guide/misc/threadPrimitiveDeprecation.html),, и, очевидно, виртуальная машина Dalvik больше не поддерживает эти методы потока. Вы должны иметь возможность заменить Thread.stop() вызов с чем-то другим - ссылка содержит довольно хороший пример того, как вы должны делать вместо вызова этих методов.

...