B 
		
				
				
			
		BlupBlup
Ambitioniertes Mitglied
- 1
 
Hi, ich möchte aus einem Thread heraus eine bestimmte 
Activity aufrufen. Welche Activity augerufen werden soll
hängt vom String ab der über eine Sockeverbindung vom Server
an die App gesendet wird.
Nun hab ich das Problem, dass ich die Methode startActivity nicht aufrufen
kann, da ich von Thread erbe und nicht von Activity.
Die Methode startActivity ist allerdgins ein Methode von Activity.
Das heißt ich müsste eine Referenz auf ein Acitivity Objekt übergeben, so
wie ich das sehe. Oder gibt es da eine andere Möglichkeit?
Wenn ich in meiner StartActivity bin wechsel ich über einen Button zu einer zweiten Activity. In der zweiten Activity starte ich den Thread dessen Code unten zu sehen ist. Ich könnte jetzt zwar dem Thread eine Referenz auf die zweite Activity übergeben, doch sobald ich in der zweiten Activity die Back Taste drücke und zur StartActivity zurückkehre wird mir die zweite Activity zerstört. Damit würde sich die Frage stellen was referenziert der Thread dann noch? Kann ja nicht mit einer Referenz auf einer zerstörten Activity arbeiten.
Wie geht man da also am besten vor?
	
	
	
		
				
			Activity aufrufen. Welche Activity augerufen werden soll
hängt vom String ab der über eine Sockeverbindung vom Server
an die App gesendet wird.
Nun hab ich das Problem, dass ich die Methode startActivity nicht aufrufen
kann, da ich von Thread erbe und nicht von Activity.
Die Methode startActivity ist allerdgins ein Methode von Activity.
Das heißt ich müsste eine Referenz auf ein Acitivity Objekt übergeben, so
wie ich das sehe. Oder gibt es da eine andere Möglichkeit?
Wenn ich in meiner StartActivity bin wechsel ich über einen Button zu einer zweiten Activity. In der zweiten Activity starte ich den Thread dessen Code unten zu sehen ist. Ich könnte jetzt zwar dem Thread eine Referenz auf die zweite Activity übergeben, doch sobald ich in der zweiten Activity die Back Taste drücke und zur StartActivity zurückkehre wird mir die zweite Activity zerstört. Damit würde sich die Frage stellen was referenziert der Thread dann noch? Kann ja nicht mit einer Referenz auf einer zerstörten Activity arbeiten.
Wie geht man da also am besten vor?
		Code:
	
	public class SignalClientThread extends Thread
{
    private String ip;
    private int port;
    private String signal;
    private BufferedReader in;
    private PrintWriter out;
    private Socket clientSocket;
    
    
    public SignalClientThread(String ip, int port)
    {
        this.ip = ip;
        this.port = port;
    }
    
    
    public void run()
    {        
        try 
        {
            this.clientSocket = new Socket(ip, port);    
            this.in = new BufferedReader(new InputStreamReader(this.clientSocket.getInputStream()));
            this.out = new PrintWriter(this.clientSocket.getOutputStream(), true);
            boolean run = true;
            
            while(run)
            {
                this.signal = this.in.readLine();
                
                if(signal.equals("Phase 1"))
                {
                    Intent intent = new Intent(context, PhaseOne.class);
                    startActivity(intent);
                }
                else if(signal.equals("Phase 2"))
                {
                    Intent intent = new Intent(context, PhaseTwo.class);
                    startActivity(intent);
                }
                else if(signal.equals("Phase 3"))
                {
                    Intent intent = new Intent(context, PhaseThree.class);
                    startActivity(intent);
                }
            }
        }
        catch (UnknownHostException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        } 
    }
    
    
    public void sendSignal(String signal)
    {
        this.out.print(signal);
        this.out.println();
    }
}