Thread beenden durch nicht abgefangene Ausnahme
Hy!
Mein code:
Thread thread = new Thread (){
@Override
public void run() {
while (true)
{
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if (msg.obj.toString()!= null)
{
JSONParse json = null;
try {
Log.e("Channel_State",msg.obj.toString());
json = new JSONParse(msg.obj.toString());
String state = json.getChannelState();
id = state;
TextView tv2 = (TextView)findViewById(R.id.mainscreen_state);
tv2.setText("Channel State: "+ state);
Log.e("State",state);
} catch (final Exception e) {
//TODO Auto-generated catch block
e.printStackTrace();
runOnUiThread(new Runnable() {
public void run() {
Toast toast ;
toast = Toast.makeText(getApplicationContext(), "Error" + e.getMessage(), 500);
Log.e("Error",e.getMessage());
toast.show();
}
});
}
}
else
{
runOnUiThread(new Runnable() {
public void run() {
Toast toast ;
toast = Toast.makeText(getApplicationContext(), "error", 500);
toast.show();
}
});
}
}
};
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("session_id", settings.getString("session_id","error")));
params.add(new BasicNameValuePair("channel_id",String.valueOf(settings.getInt("channel_id", -1))));
HttpConnection con = new HttpConnection(params, "http://surfkid.redio.de/getChannelImage", handler);
con.start();
try {
Log.e("Sleep","Begin");
this.sleep(5000);
Log.e("Sleep","End");
} catch (InterruptedException e) {
//TODO Auto-generated catch block
Log.e("Sleep","Fail");
}
}
}
};
thread.start();
Log:
02-10 00:01:29.044: ERROR/AndroidRuntime(1248): Uncaught handler: thread Thread-13 exiting due to uncaught exception
02-10 00:01:29.054: ERROR/AndroidRuntime(1248): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
02-10 00:01:29.054: ERROR/AndroidRuntime(1248): at android.os.Handler.<init>(Handler.java:121)
02-10 00:01:29.054: ERROR/AndroidRuntime(1248): at android.skiptvad.MainScreen$6$1.<init>(MainScreen.java:258)
02-10 00:01:29.054: ERROR/AndroidRuntime(1248): at android.skiptvad.MainScreen$6.run(MainScreen.java:258)
Bitte um Hilfe!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint, wie das, was Sie wollen zu tun, ist die Schaffung einer
HandlerThread
Sollten Sie auf einen thread erfolgt durch die handler in der Weise, die Sie suchen.
Erstellen Sie eine Prozedur in einen worker-thread. Das kannst du nicht tun. Der Hundeführer muss instanziiert werden im UI-thread.
Müssen Sie beginnen, eine Nachricht, die Pumpe in dem thread vor dem instanziieren eines handler. Sobald der handler erstellt, ist es gebunden ist, zu dem thread, es ist angelegt und Sie können post-Nachrichten an. Beispiel der thread:
Verwenden getHandler (), um den handler zu deinem thread, dann senden Nachrichten an.