Zatrzymanie klasy

0

Witam. Używam Splash Screen do mojego programu. I w pliku Splash Screen.java znajdują się public class i private class. I chce zaby po naciśnięciu przycisku kod w private class przestał wykonywać polecenia aż do restartu programu.
Ps.Konkretnie chodzi mi o przycisku pomijającego Splash Screen
Ps.Jestem początkujacy w javie, ale trochę wiem.
Ps.Kod przepisywalęm z telefonu więc moga być błędy przy przepisywaniu.
KOD:


public class SplashScreen extends Activity {

Button b;

private static final int CZAS = 5000;

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splashscreen);
b1=(Button) findViewById(R.id.Button);

OnClickListener l = new OnClickListener(){

public void onClick(View arg0){

Intent intent = new Intent(SplashScreen.this , MainActivity.class);
SplashScreen.this.startActivity(intent);
SplashScreen.this.finish();
}
}
};
b1.setOnClickListener(l);

ActivityStarter starter = new ActivityStarter();
starter.start();

}

private class ActivityStarter extends Thread {
@Override
public void run() {
try{
Thread.sleep(CZAS);
} catch (Exception e) {
Log.e("SplashScreen". e.getMessage());
}

Intent intent = new Intent(SplashScreen.this, MainActivity.class);
SplashScreen.this.startActivity(intent);
SplashScreen.this.finish();
}
}
}
}

0

Wątpie żeby ktokolwiek rozumiał o co pytasz. Ja w ogóle nie rozumiem. Za to widzę tu jakieś copypasty i cuda na kiju. Napisz nam co chcesz osiągnąć, bo sposób w jaki próbujesz to zrobić wygląda na błędny.
Jeśli po prostu chcesz zatrzymać wątek to w pętli w run powinieneś mieć jakis warunek stopu a w samej klasie metodę która ustawia ten warunek tak żeby przerwać pętle. Ale u ciebie pętli w ogóle nie ma (chyba ze odpalasz to kolejny raz za pomocą Intenta a kod źle przepisałeś...)

0

Z tego co ja rozumiem chodzi Ci o to, zeby po kliknieciu w przycisk i uruchomieniu aktywności wątek ActivityStarter nie uruchomił go drugi raz.
Najprościej bedzie jak zapiszesz sobie referencję do ActiveStartera w polu klasy SplashScreen:

class SplashScreen...
    private ActivityStarter starter;

a na onClicku wywolywał funkcję:

starter.interrupt();

Natomiast w ActivityStarter, w funkcji run(), dodaj sobie funkcję sprawdzającą czy watęk został przerwany fuunkcją isInterrupted(). I jezeli nie był to uruchom aktywność.

if(!isInterrupted()){
            Intent intent = new Intent(SplashScreen.this, MainActivity.class);
            SplashScreen.this.startActivity(intent);
            SplashScreen.this.finish();
        }
0

Konkretnie chodzi mi o przycisk który pomija SplashScreen
Tak jest to kopiuj i wklej bo jestem początkującym :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1