Android 13

[ Android ] 10. 싱글쓰레드와 멀티쓰레드(Handler, AysncTask)

Thread(쓰레드) 각각의 프로세스들은 서로 관여할 수 없다. 지금까지 배운 것 하나의 프로세스에서는 하나의 실행흐름만 처리할 수 있었다. 하나의 프로세스에서 여러 개의 실행흐름을 동시에 관리하는 것 => 멀티쓰레드 프로그래밍 여러 공유데이터에 관한 스케쥴링이 필요하다.(게임하기, 채팅하기, 쪽지, 음악듣기, 인쇄하기, .... ) > 쓰레드 프로그래밍을 구현하세요 1부터 100까지 출력하는 DigitThread A부터 Z까지 출력하는 AlphaThread ThreadExam01의 main메소드에서 DigitThread와 AlphaThread를 동시에 실행해보자. class DigitThread extends Thread{ public DigitThread() { } public void run() {..

[ Andorid ] 09. OnMapReadyCallBack으로 Google Map 이용해보기

구글맵 location 설정하기 SupporMapFragment로 부터 지도객체를 추출해야 지도에 여러 가지 작업을 처리할 수 있는데구글맵은 카메라로 지도를 비추고 있는 형태가 모델링 되어있기 때문에 이 위치를 찾는데 시간이 걸린다. => 따라서 내부에서 자동으로 전달될 수 있도록 작업해야한다.(ver.2로 바뀌면서 적용된 내용) FragmentManager를 이용해서 SupportMapFragment를 find OnMapReadyCallback을 구현하고 onMapReady메소드를 오버라이딩 SupportMapFragment객체에 getMapAsync메소드를 이용해서 1번에서 구현한 onMapReadyCallback 객체를 연결 맵이 준비되었을 때 자동으로 onMapReady메소드가 호출되면서 매개변수..

[ Android ] 08. drawer를 이용해 Recycler View 구현하기

TabLayout & design gradle(app) 라이브러리 다운로드 implementation 'com.android.support:design:28.0.0' menu의 리소스화 package multi.android.material_design_pro.exam; public class FragmentExam01 extends AppCompatActivity { private final List mFragmentList = new ArrayList(); private final List mFragmentTitleList = new ArrayList(); ViewPager examPager; ExamPagerAdapter adapter = new ExamPagerAdapter(getS..

[ Android ] 07. 부분 화면전환을 위한 Fragment

Fragment 메모리를 적게 사용하면서 화면 전환을 실행시키는 기법 화면은 액티비티인데 그 화면 안의 고정되어있는 부분에 그 영역에 교체되어서 들어가게 하는 역할? 자세한 내용이 궁금하다면 Github 참조. 20-04-14 화 Fragment 안드로이드에겐 Back stack이 있어서 새로운 프래그먼트가 들어오면 기존에 있던 액티비티들은 Back Stack으로 들어간다. 여기서 뒤로버튼을 누르면?(액티비티 종료) => 백스택에 맨 위에 있던 액티비티가 올라와 화면에 뿌려진다 - lifecycle => lifecycle 확인을 위해 오버라이딩 해야 하는 메소드. ( + onDestroy() ) addTobackStack 사용할 때의 lifecycle ViewPager - baisc view.ver - ..

[ Android ] 06. 안드로이드에서 Map(지도) 이용하기

Map, Location, Tab, ViewPage, Fragment https://console.developers.google.com/ Map dependencies에 필요한 라이브러리를 등록 implementation 'com.google.android.gms:play-services-maps:17.0.0' implementation 'com.google.android.gms:play-services-location:17.0.0' layout에 fragment 추가 Manifest에 인터넷 설정과 메타데이터 추가하기. - 발급받은 API-Key Location ㅇㅇㅇㅇ

[ Android ] 05. 안드로이드의 FileSystem

FileSystem 앱별로 내부저장소가 패키지별로 따로 관리가 되고 있고, 아무도 접근하지 못하는 공간. 패키지가 지워지면 자동으로 지워진다~ 외부저장소인데 패키지 이름과 똑같이만들면 삭제될 때 같이 저장된다. 똑같이 외부저장소 똑같이 외부저장소 내부저장소 이 앱만 사용하기 때문에 권한체크 안해도 됨 외부저장소 외부저장소는 다른 것들을 같이 건드리지 못하도록 권한체크 필수 사용자로 하여금 권한을 줄건지 말건지 설정해야 함 데이터를 지워도 외부저장소에는 데이터가 남아있다. // 외부저장소 권한 설정 // 이전버전 저장소 권한 설정 // 외부저장소/임의의디렉토리 생성 // => 앱을 삭제해도 데이터는 남아있다. String dirPath = external.getAbsolutePath()+"/myApp"; ..

[ Android ] 04. Permission 설정하기

Permission 마시맬로 버전 이후부터는 퍼미션 등록뿐 아니라, 사용자가 사용하기 전 퍼미션 안내 및 등록 및 직접 설정 종류 일반권함 위험권한 액티비티를 실행하거나 버튼을 누르거나 어떤 기능을 사용할 때 권한에 대한 처리를 할 수 있도록 구현 사용 메소드 checkSelfPermission : 퍼미션의 현재 상태를 확인하는 메소드 - PERMISSION_DENIED : 퍼미션이 부여되지 않은 상태 - PERMISSION_GRANTED : 퍼미션이 부여되지 있는 상태 requestPermissions : (checkSelfPermission : PERMISSION_DENIED )권한이 체크되어 있지 않은 경우에 권한을 요청하는 메시지를표시 (이 메소드 이외에도 제공되는 메소드는 여러개임) onRequ..

[ Android ] 03. 화면전환을 위한 Intent

Intent(인텐트) 여러 화면간 전환을 위해 사용 ( 두 가지 방법 존재) 실행흐름 : Activity "A" -> Intent -> 안드로이드OS -> Intent -> Activity "B" 20-04-08 수 ** Intent(인텐트) 안드로이드에서 사용하는 주요 컴포턴트 4개는 안드로이드 OS에서 실행되게 해주어야 한다. 이를 이해 Activity간의 화면전환을 위해 데이터 Intent가 전달하며 공유하는 방식. [기본 실행흐름] 인텐트 객체를 생성하고 실행할 액티비티의 정보와 데이터를 셋팅 값 셋팅 : putExtra 메소드를 이용 객체 셋팅 : Parcelable을 implement하여 이용 writeToParcel 메소드 자동호출 안드로이드OS에 인텐트 객체 넘기며 의뢰 startActiv..

[ Android ] 02. 사용자정의 adapter와 layout inflation

레이아웃 인플레이션 XML레이아웃의 내용이 메모리에 객체화되는 과정 패키지 구분하기. 레이아웃을 만들때는 항상 context 객체가 들어간다. .this 객체를 지정할 때, 익명이너클래스는 객체가 될 수 없기 때문에 아우터클래스.this를 활용하여 아우터클래스를 지칭해줘야 한다. 이너클래스에서 아우터클래스의 변수를 접근할 때는 final을 붙여줘야한다. layout Inflator protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_inflator_test); Button btn = findViewById(R.id.btnAdd); final..

[ Android ] 01. 각종 위젯과 이벤트처리방법 & AdapaterView

이벤트처리하기 이벤트소스 : 이벤트를 발생시키는 객체( ex.버튼 ) 이벤트리스너 : 이벤트 발생 시 리스너가 가지고 있는 메소드를 실행 익명이너클래스 20-03-27 금 drawble_test drawble_img_커스터마이징하기 TextTestActivity AppCompat : OS에 맞게 화면으루 맞춰주겟다. - 리소스의 외부화 이너클래스 외부클래스 20-04-06 월 etc뷰 , 선택위젯, 인텐트(액티비티 -> 액티비티의 전환)(레이아웃 인플레이션) 액티비티는 화면. 액티비티A -> 액티비티B를 실행하고싶다? new에서 생성하지 않는다. => 컴포넌트 시스템(안드로이드 내부에서 요청 후 실행) 모든것은 manifest파일을 기반으로 한다!! 현재 안드로이드 버전에서는 캐스팅코드가 필요없다. 안드..

[ Android ] 00. 안드로이드의 개요와 각종 Layout 알아보기

tool은 android studio를 사용합니다. 20-03-24 화 acitivity_main.xml MainActivity.java AndoriodManifest.xml : 설명서(권한 등) java(genrated) 폴더는 자동생성폴더라 건드리면 X res폴더 슬래시 기준으로 뒤에 있는게 피일명, 뒤에있는게 폴더명 @는 참조하고 있다는 뜻 폴더에다가 넣는다고 자동인식하는 거이 아니다. res폴더에 추가하면 => 리소스를 관리하는 R파일에 내용이 자동으로 저장 common attribute는 모든 위젯에 공통으로 가지고있는 속성 > 새로운프로젝트 작성( File - New - NewProject ) App명 : firstPro package : exam.day01.first 프로젝트명 : first..

[ Network ] 01. 안드로이드와 TCP통신을 이용해 채팅서버 구현하기

TCP통신 서버는 서버의 역할을 하기 위해 소켓 객채를 생성한 후 클라이언트로부터 들어오는 데이터를 받기 위해 포트를 열어놓고 대기해야 한다. ( Servet Socket ) 클라이언트는 서버의 IP와 포트의 정보를 알아야 한다. ( Socket ) 소켓 끼리의 통신하는 것이다 !! 서버와 클라이언트가 1대1로 채팅을 할 수 있도록 구현하기 ConsoleChatServer.java : 서버 ConsoleChatClient.java : 클라이언트 클라이언트와 서버의 input/output을 쓰레드로 구현 ClientSenderThread ClientReceiveThread ServerSenderThread ServerReceiveThread package single.console.chat; import ..

[ Network ] 00. 네트워크란 무엇인가

Network 20-04-22 수 TCP ? UDP? 프로토콜? 프로토콜 : 약속 TCP통신을 할거야 우린~ => 연결지향 : 데이터를 보내고 잘 갔는지 확인하고 제대로 안갔으면 다시 확인 네트워크프로그래밍 : 서버가 있어야 해요~ pc&pc연결 ~ => 서버와 클라이언트를 만들어야 한다. 어떤식으로 데이트를 받고 데이터를 처리해야하겠다라고 명시해놓은 pc가 있어야한다.(서버) 요청을하는pc(클라이언트) 우리는 그동안 서버역할을 하는 tomcat(웹)이나 oracle(DB)을 설치해서 사용했다. 자바에서 "쓰레드", "네트워크", "IO"에 대한 기본 개념은 필수이다! > URLTest2.java URl객체를 생성 image copy image폴더에 저장