Возникла следующая проблема.
Есть TextView и Handler к нему(для вывода в него). Я создаю поток в котором я с некоторым интервалом дергаю handler. Все идет нормально(все записи выводятся в textView). Но как только я поворачиваю телефон, перестают добавляться новые записи (но созданный поток продолжает работу). Хотя в лог выводятся (в Handler-е).
package com.example.abcd;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
public class MyActivity extends Activity {
public static final String LOG_D="MyDebug:";
public boolean b=false;
public Handler handler;
public TextView chat;
public String text;
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean("bool",true);
Log.d(LOG_D,"Save");
}
public static Message getMessageFromString(String str, String key) {
Bundle messageBundle = new Bundle();
messageBundle.putString(key, str);
Message message = new Message();
message.setData(messageBundle);
return message;
}
@Override
public Object onRetainNonConfigurationInstance() {
return text;
}
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text="";
chat = (TextView)findViewById(R.id.chat);
handler = new Handler() {
public void handleMessage (final Message msg) {
MyActivity.this.runOnUiThread(new Runnable() {
public void run() {
String chatLine = msg.getData().getString("msg");
Log.d(LOG_D,chatLine);
chat.append(chatLine);
chat.append("\n");
chat.setVisibility(View.VISIBLE);
text+=chatLine+'\n';
}
});
}
};
if(savedInstanceState!=null){
b = savedInstanceState.getBoolean("bool");
text = (String)getLastNonConfigurationInstance();
handler.sendMessage(getMessageFromString(text,"msg"));
text="";
}
if(!b){
new Thread(new Runnable() {
@Override
public void run() {
int i=0;
while(true){
try {
Thread.currentThread().sleep(6000);
handler.sendMessage(getMessageFromString("text"+i,"msg"));
i++;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
}
Кто может объяснить, почему при повороте не добавляется текст.