Android,LogCat显示此错误:“不支持弃用的线程方法”,这是什么?

时间:2011-07-26 14:26:58

标签: android multithreading deprecated ddms

运行程序后,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 个答案:

答案 0 :(得分:5)

您收到此异常,因为不推荐使用Thread的方法stop()stop(Throwable),并且永远不应该使用它。

  

因为以这种方式停止线程是不安全的,并且可能使您的应用程序和VM处于不可预测的状态。

答案 1 :(得分: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()调用 - 这个链接有一个很好的例子,说明你应该怎么做,而不是调用那些方法。