[8일차] AsncTask 실습 이번에는 핸들러 생성만 메인스레드에 어떻게 처리하면 좋겠는지 보낼거다. mHandler.post를 해서 Runable을 상속받은 메소드 코드로 보낸다. 반복적인 객체는 msg를 보내고, 다형성을 생각하면 post를 보낸다. 이런것들을 복잡해 하는 사람들 때문에 AsncTask가 있다. 이 클래스를 상속받으면 내부에 doinbackground 에서 쓰레드로 실행시켜준다. 실습은 일단 똑같이 한다. 안드로이드에서 on 으로 시작되면 거의 main 쓰레드가 호출하는 함수이다. 중간에 뭔가를 하고 싶으면 publish ..모 메소드를 호출해서 onPrexcute() 는 호출 전 세팅할때 onPostExecute() 는 끝나고 호출 됨. onProgressUpdate함수 불러준다. 오직 하나의 쓰레드가 나와.. 더보기 [8일차]핸들러 다루기 l=new Looper 객체를 만들었다. t = Tread.current Thread t.put(l) 하면 쓰레드의 값을 저장한다. 근데 이거를 Thread Locall ; l= ThreadLocal (new Looper()) 이렇게 하면 해당 쓰레드에 값을 받아올 수 있다. Handler - obtainMessage()메세지 객체는 핸들러메세지타입아규먼트오브젝트 아규먼트 이렇게 구성되는거다. 핸들러에 obtaicMessage 만들면 이게 메세지 큐에 들어가서 처리하는 거다. Handler는 루퍼를 가지고있는데 이걸 하나 만들었을 때, 어떤 쓰레드에 해당하는 메세지 큐==루퍼 에 넣는다. 그럼 핸들러는 해당 쓰레드에 쓰레드를 사용할 수 있다. 실습 프로그래스 업데이트 파일 업로드 하듯이... 이걸 쓰레드.. 더보기 [8일차] 안드로이드 쓰레드 동작방식 안드로이드 2권 쓰레드, 커스텀 ui 애니메이션, 번들, 스레드 Thread 중요한건 스레드 간 통신이다. 어떻게 주고 받는지를 알아야 된다. 쓰레드에서 배우는게 핸들러, 핸들러 처리하는거 프로세스는 자원을 독립적으로 관리한다. 다른말로는 메모리를 공유하지 않는다. 별도의 메모리 스페이스를 갖는다. UI 스레드 라고도 한다. 쓰레드 간에는 메모리를 공유 Stack이 필요하고 쓰레드의 정보를 저장하는걸 ThreadLocal이라고 한다. 메인쓰레드 말고 별도 쓰레드의 필요성ANR Dialog 쓰레드가 응답하지 않을경우 띄워주는 Dialog 시간이 많이 걸리면 뜨기때문에 시간이 많이 걸리는 작업은 별도의 처리를 해줘야한다. Network 처리 Api14이상부터 네트워크는 메인스레드가 할 수 없다. 그렇기 때문.. 더보기 [8일차] ButterKnife butterKnife 리소스와 자바코드가 매핑을 쉽게 할 수 있게 하는 오픈소스. 7.0 하고 8.0 하고 사용방법이 다르다. 사용방법 edit text, textview 이렇게 만들어 놓고, repositiriesmaven 추가 classpath 추가 aply 추가 defendency 추가 @BindView(R.id.edit_input) @onClick으로 메소드 추가 ................... 여기까지 안드로이드 1 더보기 [8일차]스타일과 테마 개발하는 사람들이 착각하는 것. 요구사항을 바꾸기 때문이라고 하는거다. 근데 바꾸는 건 당연한거다 그게 그 사람들의 일이니까 ... 바꾸자고 하는 기획자나 디자이너가 좋은거다. 개발자는 바뀔것을 항상 생각해서 프로그래밍 해야한다. 스타일 과 테마는 디자인을 바꾸는 것을 대응하기 위한 것이다. 속성의 묶음을 스타일이라고 한다. 텍스트의 대한 속성만 묶음 textApperance 라고 한다. 일반적으로 textApperance속성을 다 가지고 있다. Button은 이런스타일 뭐 그런 기본 스타일을 쫙 묶에 놓으면 테마 라고 한다. 테마란 다른말로 액티비티의 스타일이다. 그래서 이런게 테마다 하는거다. 20sp 이런식으로 스타일 적용 앞에 안드로이드 가 붙으면 플랫폼이 제공하는 속성 xml에서 테마 디폴트 스.. 더보기 [8일차] 6.0이상 임의적 퍼미션설정 Provider 내가 가진 데이터를 다른앱에서 접근할 수 있도록 하는거. 일정 연락처, 히스토리 이런거, 앱에서 접근하려면 컨텐트 프로바이더를 만들어 놓으면 다른 어플리케이션이 가져간다. 데이터 베이스 같이 결과가 나온다. 커서라는 형태로 넘어온다. 뒤에가서 데이터베이스에서 배우고 다시 할거다. grantUriPermissions 액티비티가 해당하는 데이터에 접근할 수 있도록 하는 속성 퍼미션 정의 Uri값데이터 추가 하고 뭐 변경, 삭제 할 수있다. 프로바이더는 로더를 이용해서 많이 한다. 이건뒤에가서 한다. 프로바이더 생성하는거는 관심있으면 읽어보면된다. 컨텐트 프로바이더는 내가만든 데이터를 다른 앱에서 접근하게 만드는 것 Menifest 내 앱에 대한 정보를 기술하고 있는거다. 권한정보어플리케이션이.. 더보기 [8일차]글로벌리시버, 로컬리시버 글로벌 리시버 hooking을 통해 send리시버를 통해서 보안 문제가 발생한다. (채팅같은경우 그걸 중간에 가져가는걸 후킹이라한다. ) 로컬 리시버 permission속성을 String에 이름을 적어주는데 그 퍼미션을 획득한 앱만 그 걸 실행할 수 있는 방식이ㅏㄷ. android.protectionLevel = "sigature" 같은 키스토어로 같은 도장을 찍은 앱들만 권한을 획득할 수 있다. - LocalBroadcastManager LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver,filter) - ordered 대신에 sendbroadcastsinc 라고 있다. 리턴이 되서 인텐트로 받으면 처리가 끝난거다. 받아서 처리할 때,.. 더보기 [7일차]receiver 안드로이드 메니페스트에 등록해서 받을수 있는 이벤트가 있고, 없는게 있다. registerReceiver로 등록할 수있는 이벤트는 전원이나 그런거.. Receiver가 onReceive() 메소드가 호출된다. onReceive라는 애는 동작할때만 살아있다. 그래서 Service를 구동 할 수도 있다. onReceive는 10초 이내로 동작을 끝내야 한다. 그 안에 받아서 처리를 해야한다. 액티비티를 구동할 때는 일반 브로드캐스트sendBrodcast(), priority우선순위를 가지고 높은 애부터 실행한다. sendOrderedBroadcast() menifest에 등록하는 Receiver registerReceiver로 등록한 Receiver Sticky BroadcastSticky이벤트가 발생하면 .. 더보기 [7일차]서비스 서비스는 윈도우를 가지지 않는다. 실제 호출은 메인스레드로 호출한다. 서비스 실습.new - Service intent service 내부에 쓰레드를 가지는 서비스 다음에 배운다. 생성할 때 exported "true" 하면 다른앱에서 호출하겠다는거. onBind oncreate() 에서토스트를 띄우기. onStart는 Deprecated 그래서 onStartCommand를 쓴다. 여기에 토스트 메세지 종료되면 onDestroy 호출. 여기에 토스트 메세지. 서비스 만들면 menifest에 등록이 되야된다. 액티비티에서 - 버튼 1 추가 서비스 시작하는 버튼, 인텐트만들면된다. context안에 mainActivity.this 를 넘겨준다. 그리고 startService(intent) - 버튼 2 추가 .. 더보기 [7일차]프래그먼트, BackStack 프래그먼트 현재 어떤 상태인지 알려면 프래그먼트를 찾아보면 안다. 그래서 찾기 위한 방법으로 프래그먼트에 이름을 설정하고 찾아올거다. 액티비티에서 프래그먼트에 값 전달 하는 법 실습. 프래그먼트에서 액티비티로 이전화면으로 가는거 Back Stack프래그먼트에서 BackStack 연산은 fragment transaction 인데 상태를 저장하지 않고 연산을 저장한다. 연산을 저장하게 되면 FragmentTransaction 객체를 저장해서 그 안에 연산을 저장한다. 그래서 이전화면으로 갈 수 있게 한다. FragmentTransation 을 stack으로 관리하면서 FragmentTransaction 을 pop하여 이전상태로 변경한다. 그러면 스택에서 transation entries들을 하나씩 째면서 이.. 더보기 이전 1 ··· 6 7 8 9 10 11 12 ··· 17 다음