주 활동에서 화면의 변수 sbprint에 데이터가 저장된 것처럼 보일 수 있습니다. 가변적 인 sbprint는 블루투스 데이터를 버퍼링하는 백그라운드 활동에서 얻습니다. 데이터를 다른 클래스의 화면에 표시하려고합니다. 문제는 데이터가 항상 실시간 모드에서 내 블루투스 모듈의 스트림 때문에 직렬화를 사용할 수 없다는 것입니다. 나는 데이터에서 내 UI를 업데이트하는 핸들러를 사용 here백그라운드 프로세스에서 다른 활동으로 데이터를 전달하는 방법
에 따라 코드는 참고 버퍼 : 나는 핸들러 내부 공유 환경 (이 MainActivity.java 안에)
h = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case RECIEVE_MESSAGE: // if receive massage
byte[] readBuf = (byte[]) msg.obj;
String strIncom = new String(readBuf, 0, msg.arg1); // create string from bytes array
sb.append(strIncom); // append string
int endOfLineIndex = sb.indexOf("\r\n"); // determine the end-of-line
if (endOfLineIndex > 0) { // if end-of-line,
String sbprint = sb.substring(0, endOfLineIndex); // extract string
sb.delete(0, sb.length()); // and clear
txtArduino.setText("Data from Arduino: " + sbprint); // update TextView
SharedPreferences logPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
SharedPreferences.Editor editor = logPreferences.edit();
String textLog = txtArduino.getText().toString();
editor.putString("log", textLog);
editor.commit();
}
//Log.d(TAG, "...String:"+ sb.toString() + "Byte:" + msg.arg1 + "...");
break;
}
};
};
가 H 핸들러는 메시지 개체를 얻을 수를 얻을 수 난 그냥 위와 같이 핸들러를 사용하여 다른 클래스에서 나의 새로운 화면에 변수 sbprint을 통과 할 방법이 명령에 블루투스 문서를 기반으로 ConnectedThread 클래스,
h.obtainMessage(RECIEVE_MESSAGE, bytes, -1, buffer).sendToTarget(); // Send to message queue Handler
내 질문은,에서.
여기에 다른 데이터를 전달받은 데이터가 있습니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_datalog);
tvDatalog = (TextView) findViewById(R.id.tvDatalog);
SharedPreferences logPreferences = PreferenceManager.getDefaultSharedPreferences(this);
String text = logPreferences.getString("log", "null");
tvDatalog.setText(text+"\r\n");
}
주를 제안 내가 공유 환경 설정에서 가져와 변수 버퍼의 데이터를 전달합니다 내 MainActivity에서 데이터를 가지고 있지만, 내 MainActivity가 다른 클래스에 화면 변경으로 정지 내부 작동 내 AsyncTask를 보인다. 백그라운드 활동을 두 클래스 모두에서 어떻게 작동시킬 수 있습니까? 내 화면을 다른 곳으로 바꿀 때마다 백그라운드 활동이 항상 작동한다는 것을 의미합니다.
잘 모르겠지만 데이터를 공유 환경 설정에 저장하고 애플리케이션의 어느 위치에서든지 검색 할 수 있습니다. 직렬화를 사용하면 앱이 너무 느려지므로 사용하지 마십시오. – Hesam
예, 알고 있습니다. 공유 환경 설정에 대한 권장 링크는 무엇입니까? –
최고의 참고 자료는 Android 문서입니다. 다음 링크를 참조하십시오. http://developer.android.com/training/basics/data-storage/shared-preferences.html – Hesam