전체 글 117

안드로이드 'ShouldOverrideUrlLoading' 너는 누구냐?

안녕하세요. 오늘은 안드로이드 개발중 웹뷰를 사용하여 개발할때 반드시 알아두어야 할 녀석이죠. 'ShouldOverrideUrlLoading' 바로 이놈입니다. 웹뷰 사용시 이부분을 거치지 않으면 빈깡통 같은 웹뷰가 될것입니다. 따라서 여기서 특정한 동작을 컨트롤 하면 되는데요. 이녀석은 보통 아래와 같이 사용합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /** * WebViewClient */ private inner class WebClient : WebViewClient() { override shouldOverrideUrlLoading(view:WebView , url:String) { //... return true } } 그런데 이 'shouldOverri..

코틀린사용 - 자바static, 객체식, 객체선언, 컴패니언

코틀린에서 편리한 몇가지 사용 방법 객체 선언 코틀린을 사용하다 보면 자바에서 사용하던 부분을 비슷하게 처리하려면 어떻게 해야하지? 하는 부분이 생깁니다. 자바에서 싱글턴 패턴의 구현 그리고 익명클래스 등을 살펴 보겠습니다. public class SingleTest { private static SingleTest instance; private SingleTest(){ } public synchronized static SingleTest getInstance(){ if(instance != null){ instance = new SingleTest(); } return instance; } } 자바에서 싱글턴 구현은 보통 이런식이죠? 너무 장황하며, 복잡합니다. 코틀린에서는 object 키워드를 사..

안드로이드 쓰레드 실체 파악하기

안드로이드 쓰레드 실체 파악 쓰레드 너란 녀석 오늘은 자바내의 쓰레드 기본적인 사용법과 디테일하게 실체를 파악해 보겠습니다. 사실 안드로이드개발에서 쓰레드의 실체는 리눅스의 그것 과 일치합니다. 아래의 이미지를 확인해보면 이유를 알수 있습니다. 계층 구조를 보시죠. 앱개발단 자체는 리눅스 커널을 베이스로 하고 있습니다. 때문에 앱 단의 쓰레드 또한 네이티브 pthread 를 기반합니다. 안드로이드는 pthread와 다르게 표현하려고 특별한 속성을 부여합니다. 1.UI 쓰레드 UI쓰레드는 응용프로그램의 시작과 끝을 같이 합니다. 화면에 구성요소를 실행/변경하고 이를 메인쓰레드 라고도 합니다. UI요소에 타 쓰레드가 접근하게 되면 바로 Exception을 보실수 있습니다. 오직 메인쓰레드만이 UI 조작이 가..

객체는 어떻게 조작할까? 객체와 메모리와의 관계

객체는 어떻게 조작할까? 객체와 메모리와의 관계 객체의 조작 다들 객체에 대해서는 대충이라도 알고 계실거라고 생각하는데요. 이번 장은 그 객체에 대해서 좀 더 자세하게 들여다 보려고 합니다. “객체를 생성하다” 라는 액션 자체는 메모리에 그만큼의 공간을 차지하는 결과가 됩니다. 그럼 ! 생성한 이 객체를 어떻게 조작할 것인가? AClass a = new Aclass(); 바로 우리가 아무 생각없이 썼던 이러한 구문에서 AClass 타입의 객체가 생성되고 (이 타입의 객체를 만들어줘~! 라고 말하는것과 같음) a 참조자(식별자)를 이용해 객체를 조작할 수 있는 것이죠. 우리가 프로그래밍에서 대부분의 시간을 보내는 부분이 바로 객체를 생성하고 조작하는 일입니다. 그렇다면 아래와 같은 경우는 어떻게 될까요? ..

Mobile Dev 2019.03.19

다형성의 쉬워 보이는 이해^^;

다형성의 쉬워 보이는 이해^^; 골 판지 상자 / 이미지 / pixabay oop 의 이해 : 다형성 자바에는 많은 특징이 있고 그것들을 통해 자바는 객체지향적 프로그래밍이 가능하게 됩니다. 그 중에 이번장 에서는 다형성에 대해 알아보겠습니다. 다형성(polymorphism) 은 쉽게 말해 한가지의 형태로 다양한 각자의 행동을 취하는것을 말합니다. 예를 들면! 자동차 연구소가 있다고 칩니다. 그곳에는 H자동차, K자동차, B자동차 가 있다고 하죠. 다형성을 위해 아래와 같이 상속관계를 구현하는것입니다. [자동차] (인터페이스)

클래스의 재사용과 상속 관계

클래스의 재사용과 상속 관계 상자 물음표 질문 / 이미지 / pixabay 클래스의 재사용 , has a 의 관계 같은 동작을 하는 같은 코드를 매번 만들필요는 없겠지요?(가끔 그럴때도 있긴 합니다만…) 코드를 재사용 하는 것은 객체지향언어에서 최대의 장점중 하나 입니다. 우리가 흔히 알고 있는 객체 지향의 특징중 하나인 상속 이라는 것이 있죠. 상속을 통한 재사용도 있을수 있지만 상속을 통한 관계는 부모 클래스에 매우 종속적이게 됩니다. 컴파일 시에 타입이 결정되기 때문이죠. (자식은 부모형태 이다 = child is parent ) 바로 is a 관계가 성립하기 때문이죠. 클래스 내부에서 멤버 객체(클래스)들을 생성하여 필요한 조합으로 구성할 수 있고 이를 컴포지션 이라고 합니다. 클래스 내부에서 클..

접근제어(public, private) 알고 사용하자

접근제어(public, private) 알고 사용하자 이미지 / pixabay 접근제어를 왜 써야되는가? 예전 문서들을 보던중 갑자기 접근제어에 대해 정리를 하고 싶어 졌습니다. 언어를 처음 공부할때 도대체 이해가 안되던 기억이 나네요. 자바의 접근제어에 대해서 이해해 봅시다. 자바에서 접근제어 키워드는 public, private, protected, default 가 있습니다. 그냥 쓰면 되지 굳이 이딴걸 왜 만들었을까요? 이렇게 이해하면 쉽습니다. 이미지/pixabay/생각 사고 반영 어느날 철수는 한 프로젝트에 투입되게 됩니다. (갑자기???) 철수는 클라이언트개발자로 활동중입니다. 프로젝트에 투입되자 경태 라는 코어(라이브러리, 클래스작성자라 칭함) 개발자를 만나게 됩니다. 거기서 철수가 하는일..

함께 하는 스터디 - 클래스 class 너란 녀석을 알아보자

2장. 클래스 너란 녀석... 이미지/flickr 클래스? 이제야 자바공부의 본격적인 진입입니다. 이번장 에서는 바로 그 객체란 녀석을 만들어보겠습니다. 추상적인것 말고 실제로 객체를 만든다는것은 어떤것 일지 알아야 합니다. 자바에서 객체는 Class 라는 엔티티로 표현되게 됩니다. * OOP 적인 프로그래밍 - 자바 에서 우리들이 하는 일은 그저 객체를 만드고 그걸 활용하는 것 그것이 전부. 라고도 한답니다. 그럼 객체를 만들어 볼까요? 우리는 자동차라는 객체를 이용하여 무언가를 하고싶습니다. 한번 만들어 봅시다. MyCar myCar = new MyCar(); "이게 끝입니까?" “네 끝입니다” 이것이 객체를 만드는 전부 입니다. 객체를 만든다는것은 어떤것 일까요? 객체를 생성하는 행위는 사실 메모리..

함께하는 스터디 도대체 자바가 뭐에유? 객체지향은 또 뭐람???

1장. 도대체 자바가 뭔가요? 객체지향은 또 뭐구요. 이미지 / pixabay 자바?? 커피임?? 프로그래밍을 하는자 혹은 아닌자… 혹시 누구든 자바 라는 프로그래밍언어에 대해 한번쯤은 들어보지 않았을까 합니다. "아~ 그 자바. 자바.자바… 알럽~ 커퓌 알러~~ㅂ 그거 커피 아니야?? " "응. 아니야." 이번편에 설명하고자 하는 자바는 프로그래밍 언어 JAVA 입니다. 자바는 ‘썬마이크로시스템즈’ 의 ‘제임스 고슬링’ (+ 연구원들)에 의해 1995년에 발표된 언어 입니다. 처음에는 가전제품내에 들어가는 프로그램을 위해 개발 되었다가 현재는 웹 어플리케이션(일반사람들이 이야기하는 그 홈페이지)을 만드는데 주로 쓰이는 언어 입니다. “잘 이해가 안 가신다구욧?” 잘 이해가 안되면 핸드폰을 잠시 꺼내서 ..

자바 1.8 람다식 잘 사용해보자~!

자바 1.8 람다식의 사용 안녕하세요. 자바 1.8 기준 람다식 사용법을 정리 해보았습니다. 기존의 문법으로 쓰레드를 사용하여 Hello world를 출력하면 이런식이 됩니다. 1 2 3 4 5 6 new Thread(new Runnable() { @Override public void run() { System.out.println("Hello World."); } }).start(); cs 아시다시피 기존의 문법은 복잡합니다. { 열고 ... } 닫고... { 열고... } 닫고....... 람다식을 사용하면 아래와 같이 간략해 집니다. 1 2 3 new Thread( ()->{ System.out.println("Hello World."); } ).start(); cs 어떻게 이런게 가능한가?? 이..