[안드로이드] Android Observer
2014. 4. 27. 00:30ㆍMobile/Android
반응형
[안드로이드] Android Observer
안녕하세요 ~ 이번에는 observer 에대해서 조금 살펴보겠습니다~ 아래 소스와 그림을 보시고 연습해보세요~
package com.example.ggaritest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
//이너마가 startActivityForResult에서 requestCode 같은 역활이다
public static final Uri URI = Uri.parse("content://com.tistory.ggari");
ContentObserver contentObserver = null;
Button btnSend;
Button btnSend1;
TextView tvCall;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvCall = (TextView) findViewById(R.id.tvCall);
findViewById(R.id.btnSend).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//따른 activity 에서 이걸 호출하면 됨.
getApplicationContext().getContentResolver().notifyChange(URI, null);
}
});
findViewById(R.id.btnSend1).setOnClickListener(new OnClickListener() {
@SuppressLint("NewApi")
@Override
public void onClick(View v) {
//이런식으로 구분자값을 변경이가능...
contentObserver.dispatchChange(true, URI);
}
});
// ContentProvider 더가 변경될때 알려주는 콜백함수
contentObserver = new ContentObserver(new Handler()) {
@Override
/**
* 까리의 생각
* onchage 안에서 구별값을 할 수 있는것은 true/false 바께없다
* 어떤 MSG 를 받아 처리하고싶은데...
* 예를들면 startActivityForResult(intent, requestCode) 것이다
* requestCode를 받아 처리하고싶은데.
* Observer를 사용할려면 SharedPreferences 같은걸로 구분자값을 넣어줘서
* 처리하면 유용하게 쓰일수도 있을거 같다.
*/
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Toast.makeText(getApplicationContext(), "onChange=" + selfChange, 1).show();
System.out.println("onChange=" + selfChange);
tvCall.setText("observer call=" + selfChange);
}
};
}// end oncreate
@Override
protected void onResume() {
super.onResume();
// Observer 등록
getContentResolver().registerContentObserver(URI, false,contentObserver);
}
@Override
protected void onDestroy() {
super.onDestroy();
// Observer 해지
getContentResolver().unregisterContentObserver(contentObserver);
}
}// end Activity
보내라 라고 클릭하시면 false 가 뜰 것입니다.
보내라1을 눌를경우 true 가 날라옵니다.
잘 응용해서 사용하면 좋겠지만... 조금더 공부를 해야할거 같습니다.
끝~
반응형
'Mobile > Android' 카테고리의 다른 글
| 안드로이드 JSON (0) | 2014.05.21 |
|---|---|
| 안드로이드 sqlite (1) | 2014.05.01 |
| 안드로이드 appcompat_v7 (14) | 2014.04.26 |
| 안드로이드 자바스크립트 연동 (6) | 2014.04.21 |
| Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead. Please use Android Tools > Fix Project Properties. (0) | 2014.04.20 |