전체 글 (70) 썸네일형 리스트형 [Android] HttpURLConnection 예제 최종 업데이트 20.09.25HttpURLConnection 을 이용하여 웹페이지의 내용(html) 을 읽어오는 예제 0. 먼저 Manifest.xml 에 권한을 추가한다. 1. 웹페이지의 내용을 뿌려줄 화면 레이아웃을 구성한다.editText에 있는 링크에 접속해서 textView에 내용 뿌려주는 뷰로 구성되어있다. 2. 웹페이지에 연결할 Thread 클래스를 만든다.스레드를 따로 만들어야하는 이유는, 작업시간이 오래걸릴 수 있는 IO 작업(서버통신)을 메인스레드에서 작업할 경우 블로킹이 발생할 수 있기때문에 안드로이드 자체적으로 익셉션이 발생한다. 따라서 IO 작업은 백그라운드 스레드로 수행해야한다. class RequestThread extends Thread { public void run(){ .. [Android] Socket 통신 예제 최신 글(kotlin) 보러가기 - 20.09.28 업데이트 - 2-tier C/S 모델 : 서버와 클라이언트가 1대1로 연결되어, 요청 응답 주고받음- 3-tier 모델- 서버를 좀 더 유연하게 구성- 응용서버와 데이터서버로 구성하는 경우로, 데이터베이스를 분리시킴.- 중간에 있는 서버를 애플리케이션 서버 또는 미드웨어라고 함 1. 소켓 연결을 위한 socket 객체 생성2. 데이터를 쓰기 위한 스트림 객체를 만들고 데이터 쓰기3. 데이터를 읽기 위한 스트림 객체를 만들고 데이터 읽기 환경은 동일 단말 0. 서버, 클라이언트 매니페스트에 인터넷 권한 추가 1. 서버 애플리케이션(서비스)void onCreate() { // 초기화 되는 시점. 스레드 실행 super.onCreate(); ServerThr.. [Android] AsyncTask AsyncTask 는 API 30 부터 Deprecate 되었습니다. 공식문서 참고 스레드를 사용하여 UI를 변경하고 싶다면, 메인스레드에 붙어있는 핸들러에게 요청해야한다는 것을 이미 알고있다.Runnable 객체, post 메소드를 이용해서 좀 더 간단하게 구현하는 방법도 있다.하지만, 여전히 복잡하고 코드가 길어 해석하는데에 어려움이 있다. 핸들러를 사용하는 코드가 복잡하게 느껴지는 이유는, 스레드 안에서 실행되어야할 코드와 UI 접근을 위한 코드가 각각 다른 위치에서 구현해야하기 때문이다. 이러한 혼란스러움을 해결하기 위한 방법은 바로 AsyncTask! AsyncTask는 하나의 클래스 안에 스레드로 동작하는 부분과 화면을 갱신하는 부분을 함께 구현해놓을 수 있다.이 때문에 스레드를 사용하는 하나.. [Android] Thread와 handler 그리고 Runnable 안드로이드 애플리케이션이 실행되면, 하나의 프로세스로 동작한다.프로세스 안에는 여러가지 작업으로 분할되어 스레드들이 동시에 작업을 수행한다.사용자가 직접 스레드를 생성하여 작업을 분할시켜 수행할 수 있다. 안드로이드 애플리케이션은 메인 스레드라는 것이 전체적인 UI 관리 담당 앱의 기본적인 작업들을 수행하고 있다. 표준 자바의 경우, 스레드는 교착상태와 같은 일이 발생하지 않는 경우 알아서 수행된다. 하지만 안드로이드는 다르게 개발자가 직접 제어해주어야한다. 스레드를 생성하여 직접 UI를 동시에 접근하고자 할 때 다음과 같은 에러가 발생한다.android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that crea.. [Kotlin] n초 뒤 화면 전환 Handler().postDelayed({ startActivity(Intent(StartActivity::class.java, MainActivity::class.java)) }, 2000L)액티비티를 실행할 때 위와같이 딜레이를 준 후 핸들러에게 넘겨주면 된다. 원리를 요약하면 아래와 같다.- 핸들러 생성 시점의 스레드(여기서는 보통 메인스레드)의 메시지 큐에 { } 안에 정의된 작업(람다식이 Runnable 로 변환됨)을 큐잉한다.- 설정한 딜레이가 지난 후 작업이 수행되도록 한다. new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(StartActivity.th.. [Kotlin] 인터페이스 구현할때 1. 구현할 메소드가 하나뿐이면 람다식으로 간단하게 구현 가능(SAM 하라고 안스에서도 warning 뜸)calendar.setOnDateChangeListener({ calendarView, year, month, dayOfMonth -> Toast.makeText(baseContext, "클릭됨", Toast.LENGTH_SHORT).show() }) 2. 그 외의 경우에는 원래대로 해야함calendar.setOnDateChangeListener(object : CalendarView.OnDateChangeListener { override fun onSelectedDayChange(p0: CalendarView?, p1: Int, p2: Int, p3: Int) { TODO("not implemen.. [Android] 툴바 테두리 없애기 부코 프로젝트 진행하면서 레이아웃 똑같이 만드느라 개고생중에툴바 테두리를 어떻게해야하나 몇시간을 헤맸는데이렇게 한번에 찾아주다니... 툴바에 적용시킬 style에 그냥 elevation 속성만 추가해주면 된다. (나같은경우는 앱바레이아웃에 적용되어있다. 자바코드로도 보면 앱바(액션바)를 셋하기 때문에 툴바 스타일이 아니라 앱바 스타일을 바꿨어야했다..!!!!!)부코 강의 들을 때 타이틀스트립 강의에서 들어봤던 속성인데.... 이게 나의 발목을 잡다니!!!!!!!!! 사진 크기는 귀찮아서. before -> after 이다. [Kotlin]코틀린을 이용한 안드로이드 프로그래밍 실습 04 퀴즈 : 1. 탑레벨의 고차 함수 TimeLogCheck 를 만든다. 2. TimeLogCheck 는 String 타입의 tag 와 함수타입 (tag:String) -> List 을 가지는 f 를 인자로 갖는다. 3. TimeLogCheck 에서 인자로 받은 람다를 실행하기 전에 “현재시간 : tag -> 시작” 이란 로그를 출력하고 람다를 실행한 후에 “현재시간 : tag -> 종료(elapsed time : 종료 – 시작)” 을 출력한다. 4. TimeLogCheck 는 람다함수가 리턴한 값을 리턴한다.5. 순서대로 1~1000 까지 가지는 mutableList 타입의 initList 를 생성한다. 6. A : 리스트의 filter 로 짝수를 걸러내고, map 에서 Int 를 String 으로 바꾼 .. 이전 1 ··· 4 5 6 7 8 9 다음