[안드로이드] 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 |