Thread aguardar término

3 respostas
G

Seguinte tenho uma classe thread para executar uma determinada tarefa e exeibir um progresbar.

O meu problema que ao concluir esta thread preciso atualizar os valores da tela, porém não consegui, preciso de uma forma que somente execute o método que carrega os totais apos concluir a thread, já tentei diretamente dentro da thread e não aceita dá erro informando que não posso atualizar os texteview.

//Inicia-se uma Thread (na classe main)
        try{
        	               
            try { 
            		handler = new Handler();   	 
		            thread = new Inner();		     
		            thread.start(); 		            

                            //Aqui depois que terminar a thread quero carregar o meu método
                            Totais();

        			
            }catch (Exception e) {
            	//
			}
            
        }catch (Exception e) {
        	//
        }

private class Inner extends Thread{
	   	 
    	public void run(){
 
    		handler.post(new Runnable() {
 
				@Override
				public void run() {
 
					progressDialog = ProgressDialog.show(WebService.this, "Aguarde", "Sincronizando com o Servidor...");  
				}
			});
 
    		try {

    			 FAZALGUMACOISA();
    				    			
    			} catch (Exception e) {
    				progressDialog.dismiss();

    			}
 
				progressDialog.dismiss();  
						
    	}   
        
}

Alguém pode me ajudar, quanto a executar o método “Totais” somente apos a thead for encerrada e na classe mais, pois dentro da propria thread o sistema não aceita pois não está dentro do mesmo seguimento.
Obrigado

3 Respostas

E

Você espera uma thread com o método join. Por exemplo:

Thread thr = new Thread(new Runnable () {
     public void run () {
         ...
     }
});
// faça alguma outra coisa...
...
// e espere a thread voltar:
thr.join();
rafael_jesus

giliardabreu:
Seguinte tenho uma classe thread para executar uma determinada tarefa e exeibir um progresbar.

O meu problema que ao concluir esta thread preciso atualizar os valores da tela, porém não consegui, preciso de uma forma que somente execute o método que carrega os totais apos concluir a thread, já tentei diretamente dentro da thread e não aceita dá erro informando que não posso atualizar os texteview.

//Inicia-se uma Thread (na classe main)
        try{
        	               
            try { 
            		handler = new Handler();   	 
		            thread = new Inner();		     
		            thread.start(); 		            
                            
                            thread.join();
                            
                            //Aqui depois que terminar a thread quero carregar o meu método
                            Totais();

        			
            }catch (Exception e) {
            	//
			}
            
        }catch (Exception e) {
        	//
        }

private class Inner extends Thread{
	   	 
    	public void run(){
 
    		handler.post(new Runnable() {
 
				@Override
				public void run() {
 
					progressDialog = ProgressDialog.show(WebService.this, "Aguarde", "Sincronizando com o Servidor...");  
				}
			});
 
    		try {

    			 FAZALGUMACOISA();
    				    			
    			} catch (Exception e) {
    				progressDialog.dismiss();

    			}
 
				progressDialog.dismiss();  
						
    	}   
        
}

Alguém pode me ajudar, quanto a executar o método “Totais” somente apos a thead for encerrada e na classe mais, pois dentro da propria thread o sistema não aceita pois não está dentro do mesmo seguimento.
Obrigado

Cara tenta isso!!

G

OK, obrigado, resolvido.

Criado 7 de março de 2013
Ultima resposta 8 de mar. de 2013
Respostas 3
Participantes 3