Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
启动启动屏幕时的java.lang.UnsupportedOperationException_Java_Android - Fatal编程技术网

启动启动屏幕时的java.lang.UnsupportedOperationException

启动启动屏幕时的java.lang.UnsupportedOperationException,java,android,Java,Android,启动启动屏幕时,logcat中出现错误: 11-06 02:36:45.450: E/global(4184): Deprecated Thread methods are not supported. 11-06 02:36:45.450: E/global(4184): java.lang.UnsupportedOperationException 11-06 02:36:45.450: E/global(4184): at java.lang.VMThread.stop(VMThr

启动启动屏幕时,logcat中出现错误:

11-06 02:36:45.450: E/global(4184): Deprecated Thread methods are not supported.
11-06 02:36:45.450: E/global(4184): java.lang.UnsupportedOperationException
11-06 02:36:45.450: E/global(4184):     at java.lang.VMThread.stop(VMThread.java:85)
11-06 02:36:45.450: E/global(4184):     at java.lang.Thread.stop(Thread.java:1280)
11-06 02:36:45.450: E/global(4184):     at java.lang.Thread.stop(Thread.java:1247)
11-06 02:36:45.450: E/global(4184):     at com.example.kostas.splash$1.run(splash.java:38)
这是我的班级:

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.example.kostas.main"));
                    stop();
                }
            }
        };
        splashTread.start();
    }
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            _active = false;
        }
        return true;
    }
谢谢

已经有一段时间不推荐使用了:

这种方法本质上是不安全的。使用thread.stop停止线程 使其解锁所有已锁定的监视器(作为 未经检查的ThreadDeath异常传播的自然结果 向上)。如果以前受这些保护的任何对象 监视器处于不一致的状态,损坏的对象变为 对其他线程可见,可能导致任意行为。 stop的许多用法应该被简单地修改某些代码的代码所取代 变量,指示目标线程应停止运行。这个 目标线程应定期检查此变量,并从 如果变量指示 就是停止跑步。如果目标线程等待很长时间(在 例如,条件变量),应使用中断方法 打断等待

简而言之,您不应该调用
stop()
。如果您在删除
stop()
时添加了一些关于其他错误的详细信息,也许有人也可以帮助您解决这个问题。

已经有一段时间不推荐使用了:

这种方法本质上是不安全的。使用thread.stop停止线程 使其解锁所有已锁定的监视器(作为 未经检查的ThreadDeath异常传播的自然结果 向上)。如果以前受这些保护的任何对象 监视器处于不一致的状态,损坏的对象变为 对其他线程可见,可能导致任意行为。 stop的许多用法应该被简单地修改某些代码的代码所取代 变量,指示目标线程应停止运行。这个 目标线程应定期检查此变量,并从 如果变量指示 就是停止跑步。如果目标线程等待很长时间(在 例如,条件变量),应使用中断方法 打断等待


简而言之,您不应该调用
stop()
。如果您在删除
stop()
时添加了一些关于其他错误的详细信息,也许有人也可以帮助您解决这个问题。

答案在错误消息中:Thread.stop()已弃用,Android不支持弃用的方法


也许您可以尝试在onCreate中使用Thread.sleep()来代替超时。

答案在错误消息中:Thread.stop()已弃用,Android不支持弃用的方法

thread.stop() is deprecated method so you have to remove that line from your code.

也许您可以尝试在onCreate中使用Thread.sleep()来代替超时。

Wow,真奇怪。弃用是删除的前奏。弃用并不意味着您不必实现该方法,它意味着您应该停止调用该方法,因为在未来的Java版本中,它将消失。我猜谷歌说的是实话:Android真的不是Java。没错,在Android设备上运行的JRE是Java的定制版本。它与从java.sun.com下载时得到的实现不同。同样的情况也适用于Google App Engine.IIRC,一些不推荐使用的线程方法甚至没有被Sun/Oracle JVM实现。我认为谷歌在这里所做的是正确的,它践踏了其他人。哇,太奇怪了。弃用是删除的前奏。弃用并不意味着您不必实现该方法,它意味着您应该停止调用该方法,因为在未来的Java版本中,它将消失。我猜谷歌说的是实话:Android真的不是Java。没错,在Android设备上运行的JRE是Java的定制版本。它与从java.sun.com下载时得到的实现不同。同样的情况也适用于Google App Engine.IIRC,一些不推荐使用的线程方法甚至没有被Sun/Oracle JVM实现。我认为谷歌在这方面的做法是正确的,他用
sleep()
来实现超时,而
stop()
是在超时完成后使用的,完全没有必要。当
run()
方法返回时,线程将自行停止?是的,只需删除
stop()
。当
run()
退出时,线程自然停止。我也遇到了同样的问题。我是根据自己认为合适的方式命名自己的函数的,我甚至没有考虑过
线程
对象有一个不推荐的
stop()
方法。。。为什么不这么说?谢谢。他正在使用
sleep()
来实现超时,而
stop()
是在超时完成后使用的,完全没有必要。当
run()
方法返回时,线程将自行停止?是的,只需删除
stop()
。当
run()
退出时,线程自然停止。我也遇到了同样的问题。我是根据自己认为合适的方式命名自己的函数的,我甚至没有考虑过
线程
对象有一个不推荐的
stop()
方法。。。为什么不这么说?谢谢
thread.stop() is deprecated method so you have to remove that line from your code.