android - chamando thread de ui do thread de trabalho
Oi eu quero fazerToast
disponível para mim não importa o que e disponível em qualquer segmento sempre que eu gosto dentro do meu aplicativo. Então, para fazer isso eu estendi oActivity
classe:
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Toast;
public class MyActivity extends Activity{
private Handler mHandler;
@Override
public void onCreate(Bundle savedInstanceState) {
mHandler = new Handler();
super.onCreate(savedInstanceState);
}
private class ToastRunnable implements Runnable {
String mText;
public ToastRunnable(String text) {
mText = text;
}
public void run(){
Toast.makeText(getApplicationContext(), mText, Toast.LENGTH_SHORT).show();
}
}
public void doToast(String msg) {
mHandler.post(new ToastRunnable(msg));
}
}
de modo atodos Activity
aulas no meu aplicativo agora são simplesmente
public class AppMain extends MyActivity {
//blah
}
o que eu esperava poder fazer (em um thread de trabalho) era isso:
try{
MyActivity me = (MyActivity) Looper.getMainLooper().getThread();
me.doToast("Hello World");
}
catch (Exception ex){
Log.e("oh dear", ex.getMessage());
}
e enquanto oActivity
era um "MyActivity
"deve funcionar - mas o problema é ---> oLooper.getMainLooper().getThread();
não está retornando oMyActivity
para mim e isso está me fazendo chorar - o que estou fazendo de errado?
: EDITAR:
alguns antecedentes para explicar "por que" estou preso a esse tipo de implicação.
Eu preciso ser capaz de confirmar ao usuário que um evento "HTTP POST" foi um sucesso. Agora. Se o usuário clicar em "OK" no formulário de interface do usuário pode ou não ter internet na época .. Se ele tem Internet - tudo bem e bem - ele envia o formulário via HTTP POSTtudo bem e bem.. mas se houverSem internet mais (99,999% dos aplicativos Android manco / patético / mewling para isso, e basicamente oferecem ao usuário nãoplano B" assumindo que em todos os momentos a internet está lá - quando NÃO é)
Meu aplicativo não vai "coxo (como eu chamo)" - ele tem umplano B" em vez disso, "enfileira" o evento de postagem e repete a cada x minutos. agora, esse é um thread silencioso no segundo plano. Tenho bastante interação do usuário em todo o aplicativo. Não sei onde o usuário "estará", mas eventualmente quando o HTTP POST que a fila / tentativas / fila / tentativas retorna "! Sucesso!" Eu queroToast
isso como uma mensagem para o usuário (EG: "seu formulário foi enviado")