마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

서버에서 데이터를 받을때마다 누적해서 저장하려고 합니다.

0 추천

리눅스 서버, 안드로이드를 클라이언트로 사용하고 있습니다.

소켓서버로 데이터통신을 하는데요. 서버에서 데이터가 전송될때마다 메인엑티비티가 아닌 다른 액티비티2에 텍스트뷰에 데이터를 누적해서 저장하려 합니다.

그런데 문제가 메인엑티비티에 edittext에서 입력받은 값과 서버통신을 통해 전송받은 데이터 둘다 액티비티2에 있는 텍스트뷰에 같이 누적해서 저장을 해야하는데 어떻게 구현을 해야할지 모르겠습니다.

<메인액티비티>
SharedPreferences pref1 = getSharedPreferences("PrefName", MODE_PRIVATE); //액티비티2에 저장된 data 불러옴
String text = pref1.getString(PREF, "");
text = text + str; //str=입력받은데이터
SharedPreferences.Editor editor = pref1.edit();
editor.putString(PREF, text + "\n"); 
editor.commit();

<액티비티2>
SharedPreferences pref1 = getSharedPreferences("PrefName", MODE_PRIVATE);
String text = pref1.getString(PREF, "");
View.setText(text);

원래 이렇게 해서 메인액티비티에서 입력받은 데이터를 액티비티2에 누적해서 저장했는데요. 
여기서 액티비티2에 서버에서 전송된 데이터도 같이 저장하려 합니다. 
한번 저장된 값이 사라지면 안되서 sharedpreferences 사용했구요. 

<소켓서버 데이터받는부분>
static String text1=activity2.text2;

public void run() {
while(flag == 1) {
	try{
	networkReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));	
	rcvData = networkReader.readLine();
	
	text1 = text1 + " " + rcvData + " " + "\n";
} catch

<액티비티2>
SharedPreferences pref1 = getSharedPreferences("PrefName", MODE_PRIVATE);
String text = pref1.getString(PREF, "");
text2 = text + rcvthread.text1;
View.setText(text2);

여기서 서버에서 오는 데이터도 저장하려고 이렇게 했더니 메인액티비티에서 입력된 값은 저장이 안되네요.. 
어떻게 해야하나요?

 

익명사용자 님이 2015년 9월 21일 질문

1개의 답변

0 추천
웹통신은 asynctask를 이용하세요. 아마 받아오기전에 출력이 먼저 되어서 그런거 같은데, asynctask의 doInBackGround에 통신을 넣고, onPostExecute에서 TextView를 찍도록 해보세요.
길버트공원 (1,720 포인트) 님이 2015년 9월 24일 답변
...