Error java.lang.UnsupportedOperationException en splashscreen.java

Sigo recibiendo estos errores relacionados con Thread.stop() en splashscreen.java. Soy bastante nuevo en esto y estoy al tanto de Thread.stop() en desuso, pero ¿alguien puede explicar qué estoy haciendo mal aquí? Gracias.

    java.lang.UnsupportedOperationException
    at java.lang.Thread.stop(Thread.java:1076)
    at java.lang.Thread.stop(Thread.java:1063)
    at com.dapp.d.SplashScreen$4.run(SplashScreen.java:88)

Este es el código fuente completo de splashscreen.java

    import android.app.Activity;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.RelativeLayout;

    public class SplashScreen extends Activity {

private boolean active = true;
private int splashTime = 3000;
private boolean clickFlag = true;
private Thread splashTread = null;
private Button btnHelp;
private Button btnAboutUs;

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    RelativeLayout relativeLayout = (RelativeLayout)findViewById(R.id.splashRelativeLayout);
    relativeLayout.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Uri uri = Uri.parse("http://www.exmaple.com");
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(intent);
        }
    });

     btnAboutUs = (Button)findViewById(R.id.btnAboutus);
     btnHelp = (Button)findViewById(R.id.btnHelp);

    try{

        btnAboutUs.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                clickFlag = false;
                splashTread.stop();  <<<<<<<<<<<<<<<<<<< line 49
                Intent intent = new Intent();
                intent.setClass(getApplicationContext(), AboutUs.class);
                startActivity(intent);
                SplashScreen.this.finish();
            }
        });

        btnHelp.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                clickFlag = false;
                splashTread.stop();   <<<<<<<<<<<<<<<<<<< line 63
                Intent intent = new Intent();
                intent.setClass(getApplicationContext(), HelpActivity.class);
                startActivity(intent);
                SplashScreen.this.finish();
            }
        });

        splashTread = new Thread() {
            @Override
            public void run() {
                try{
                    int waited = 0;
                    while(active && (waited < splashTime)) {
                        sleep(100);
                        waited += 100;
                    }                       
                } catch(InterruptedException e) {
                    // do nothing
                }finally {
                    if(clickFlag){
                        Intent intent=new Intent();
                        intent.setClass(getApplicationContext(), SearchWord.class);
                        startActivity(intent);
                        finish();
                        stop(); <<<<<<<<<<<<<<< line 88
                    }else{
                        finish();
                        stop();
                    }
                }
            }
        };
        splashTread.start();

    }catch (Exception e) {
        // TODO: handle exception
    }
}

    }

preguntado el 31 de julio de 12 a las 15:07

ejecutar la eliminación de la aplicación después de stop() -

Eso provocó que forzara el cierre en todas las versiones, mientras que antes no lo hacía... -

2 Respuestas

No creo que necesites llamar para detenerte allí. Su subproceso no se repite, por lo que se ejecutará y finalizará normalmente. Intente simplemente eliminar el stop();

Respondido 31 Jul 12, 15:07

y si eso todavía no funciona, intente unirse a ellos en su lugar. de hecho, comenta todo debajo de startActivity(). - tiburón

Eliminé stop() pero aún forzó el cierre de la aplicación. Eliminando las líneas 49 y 63: los mismos resultados, ¿alguna idea mejor? Gracias. - parque123

No estoy familiarizado con un Thread.finish() ¿es ese tu método? Además, cuando detecta la excepción, al menos debe registrar la excepción porque actualmente se puede detectar una excepción y usted no lo sabe. - Zoop

Tuve un problema similar y la solución es envolver el método de detención en una declaración de prueba/captura y en el uso de captura Throwable t. Funcionará.

Respondido 31 Jul 12, 16:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.