고급위젯
1. 프로그래스바
setprogress() = 프로그래스값 설정
setIncrementProgessby() = 상승값
setMax() = 맥스값
인텐트 ( 명시적 , 암시적 ) chap7
1. 인텐트 보내기
단방향 보내기 : startActivity(intent)
양방향 보내고 받기 : startActivityForResult(intent, NEWACTIVITY); 뒷 부분은 상수 값으로
static final intNEWACTIVITY=1000 이렇게 미리 만들어주고 답이 올때 이 상수값으로 어디서 왔는지 확인한다
2. 값 받기
intent = getIntent();
3.값 뜯어보기 ( 키값으로 )
intent.getStringExtra("activity");
4. 답장 보내기
setResult(RESULT_OK,intent);
5. 답장온거 확인하는 메소드 (답장온거 이 메소드의 리퀘스트 코드와 리설트 코드로 확인해보기 )
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data);
6 . 다른 패키지로 인텐트 보내기
ComponentName componentName = new ComponentName("com.example.another" , //받을놈의 패키지와 클래스 "com.example.another.MainActivity");
7. 인텐트에 컨포넌드 장착
intent.setComponent(componentName);
나머지는 똑같이 하면 된다.
직렬화
primitive타입 , Serializable ,Parcel , Parcelble , Bundle, Intent
이건 직접 봐야 이해 될거 같다 .
액티비티 생명주기 chap8
1. 실행 흐름의 따른 데이터 저장과 데이터 불러오기
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) 데이터 불러오기 (지금 사용불가 )
protected void onSaveInstanceState(@NonNull Bundle outState) 데이터 저장하기 (지금 사용불가 )
2. 데이터 저장하기 onPause()에서 saveData메소드로 SharedPreferences 사용하여
public void saveData(){
// 데이터를 저장하는 메소드, 읽기전용인지 읽고쓰고 다른곳에서도 사용할것인지에 따라 달라짐
SharedPreferences sharedPreferences = getSharedPreferences("pref" , MODE_PRIVATE); // ( 이름과 , 모드 ) SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("Score" , 10000);
editor.putString("msg", "나는데이타"); // 번들형 키와 값
editor.commit(); // 완료했다는 것!
3. 데이터 불러오기 onResume 상태에 오면 데이터 불러오기
protected void onResume() {
super.onResume();
SharedPreferences sharedPreferences = getSharedPreferences("pref" , MODE_PRIVATE);
score =sharedPreferences.getInt("Score" , 0);
if (score != 0 ) {restoreData();}
}
4.데이터 초기화하기 onDestroy 여기에서 해주면 된다
//액티비티가 종료 될때 값초기화 시켜주는 것 ( 안하면 나중에 다시 왔을때 값이 남아있다 )
SharedPreferences sharedPreferences = getSharedPreferences("pref" , MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear(); // 값을 초기화 하는 것
editor.commit(); // 완료했다는 것!
태스크
사용자이벤트처리 &리소스 활용 chap10 ( 자세한건 책보고 찾아쓰자 별로 안중요함 ... )
1.터치 이벤트 ( 눌럿을떄 )
public boolean onTouch(View v, MotionEvent event) = 터치했을때 이벤트
2.키 이벤트 (핸드폰의 키가 눌렸을떄 )
3.제스쳐이벤트 (터치 이벤트 중 일정한 패턴을 만들어내는 )
4.포커스
5.화변 방향 변경
매니패스트에 해당 액티비티에 이렇게 작성해주면
public void onConfigurationChanged(@NonNull Configuration newConfig) 이거 호출됨
android:configChanges="orientation|screenSize"> <!-- 화면이 회전될때 onConfiguration 메소드 호출 -->
-액티비티수명주기 1 편보면 만들고 사용한부분참고
인플레이션 chap11
1. 1번 방법 레이아웃인플레이터 만들기 (예전에 사용하던 방법 )
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
2.2번방법 레이아웃인플레이터 만들기 (새로운 방법)
컨택스트 정보가 있을땐 LayoutInflater inflater = getLayoutInflater();
컨택스트 정보가 없을땐 LayoutInflater inflater = getLayoutInflater().from(context) 이렇게 사용
3. 인플레이션 하기
// 1)해당 레이아웃 2)넣을 곳 3)그냥 true ( 붙이겠다는거에 동의같은 의미 )
inflater.inflate(R.layout.sub , layout ,true);
서비스
1.서비스 생명주기
public void onCreate() = 서비스 생성시 딱한번 호출 1번
public int onStartCommand(Intent intent, int flags, int startId) = 생성시 호출 (다시 시작해도 여기호출 ) 2번
public void onDestroy() = 마지막 서비스 종료시 호출 3번
2. 서비스 시작과 종료 (똑같이 인텐트로 서비스 시작 )
startService()
stopService()
브로드캐스트 ( 시스템에서 정보 받아와서 일처리 하던지 , 어플간에 신호 주고받으면서 일처리할때 도 사용됨 )
1. 리시버등록
브로드캐스트 객체화 하고 필터로 액션 달아주고 브로그캐스트 수신기 실행
broadcastReceiver = new MyReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(MyReceiver.MY_ACTION);
registerReceiver(broadcastReceiver,filter);
2. 콜백 메소드 (방송수신시 자동 실행 되는 메소드 )
public void onReceive(Context context, Intent intent) {}
3. 브로드캐스트 종료
abortBroadcast();
브로드캐스트는 따로 자바파일만들어서 해도 되고 11장 QUIZ 에서 사용한거 처럼 이너 클래스 만들어서 해주어된다
위험 권한 & 알림 ( 유저 퍼미션 )
1. 위험권한 물어보는 코드
if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this , new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},100);
}
2. 11장브로드캐스트SMS 보고 참고 (SMS 유저권한 매니패스트에 작성 )
<uses-permission android:name="android.permission.RECEIVE_SMS"/> SMS
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 부팅시
등 다양한것들 있음 .
전화 수신 , 발신 ,배터리 상황 , 스마트폰 전원공급시 등등 여러가지 들이 있음 참조해서 사용하면 된다.
다이얼로그
알람 (정리한거 보고 찾아서 쓰자 )
NotificationManager manager; = 알림을 시스템에 발생시키는 SystemService
NotificationCompat.Builder builder; =알림을 다양한 정보로 생성
프래그먼트 chap11
1 . 선택한 항목이 프리퍼런스에 자동으로 저장된다 //저장해놓은것들을 가져올려면 프리퍼런스 매니저를 통해
prfs에 참조해줌 prfs = PreferenceManager.getDefaultSharedPreferences(getActivity());
2. 사용자가 버튼을눌러 자동저장된 값이 번경되면 실행 되는 메소드
SharedPreferences.OnSharedPreferenceChangeListener prefListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
3.다른 프래그먼트화면을 띄울때 프래그먼트 화면은 스스로 화면 전환이 안되기 때문에
메인액티비티한테 해달라고 보내는것이다 . (콜백함수) 인텐트로 보내서 메인에서 작업처리
public void onNavigateToScreen(PreferenceScreen preferenceScreen)
4. 프래그먼트 시작 ( 매니저 참조.트렌젝션시작.추가(add)or교체(replace)or삭제(remove).(셋팅해줄곳,프래그먼트).시작
getSupportFragmentManager().beginTransaction().replace(android.R.id.content,settingPreferenceFragment,null).commit();