안드로이드 앱 개발 공부48 [Android] Main Thread(UI Thread ) 와 Worker Thread UI는 멀티스레드에서만 가능하도록 설계되어 있다. 오래 걸리는 작업은 worker Thread에서! public void onClick(View v) { new Thread(new Runnable() { public void run() { Bitmap b = loadImageFromNetwork(""); mImageView.setImageBitmap(b); // 여기서 오류 발생!! } }).start(); } →해결방법 public void onClick(View v) { new Thread(new Runnable() { public void run() { final Bitmap bitmap = loadImageFromNetwork(""); mImageView.post(new Runnable() { p.. 안드로이드 앱 개발 공부/안드로이드 기본(노션 이동) 2023. 3. 6. [Android] Thread 와 Process의 차이점 A. 프로세스는 메모리 상에서 실행 중인 프로그램을 말하며, 스레드는 이 프로세스 안에서 실행되는 흐름 단위를 말한다. 프로세스는 최소 하나의 스레드를 보유하고 있다. 프로세스는 자신만의 고유한 공간과 자원을 할당받아 사용한다. 스레드는 다른 스레드와 공간과 자원을 공유하면서 사용한다. Q. 프로세스의 문제점은? 프로세스 생성에 큰 오버헤드가 있다. ( 프로세스를 생성할 때 많은 시간이 소요됨 0) 프로세스 콘텍스트 스위칭의 비효율성, 오버헤드가 큼 프로세스 사이에 통신이 어렵다는 점 (IPC사용해야 함) Q. 스레드의 출현 목적은? 프로세스보다 크기가 작은 실행 단위 필요 프로세스의 생성 및 소멸에 따른 오버헤드 감소 빠른 콘텍스트 스위칭 프로세스들의 통신 시간, 방법 어려움 해소 Q. 스레드 주소공간.. 안드로이드 앱 개발 공부/안드로이드 기본(노션 이동) 2023. 3. 6. Thread 와 Handler 💡 UI 작업은 Main Thread에서 처리해야 한다?! → 성능을 위해 멀티스레드를 많이 사용하지만 UI를 업데이트하는 데는 단일 스레드 모델이 적용된다. 멀티 스레드로 UI를 업데이트하면 동일한 UI 자원을 사용할 때 교착 상태(deadlock), 경합 상태(race condition) 등 여러 문제가 발생할 수 있어서 UI 업데이트를 메인 스레드에서만 허용한다. 앱 프로세스가 시작되면 메인 스레드가 생성된다. 컴포넌트의 생명주기 메서드와 그 안의 메서드 호출은 기본적으로 메인 스레드에서 실행된다. 메인 스레드는 UI를 변경할 수 있는 유일한 스레드이기 때문에 메인 스레드를 UI 스레드로 부르기도 한다. 💡 Thread(스레드) 동시 작업을 위한 하나의 실행 단위 앱을 실행하면 앱의 기본 실행을 담.. 안드로이드 앱 개발 공부/안드로이드 기본(노션 이동) 2023. 3. 4. [Android] PendingIntent Intent를 가지고 있는 클래스 다른 애플리케이션(다른 프로세스)의 권한을 허가하여 가지고 있는 Intent를 마치 본인 앱의 프로세스에서 실행하는 것처럼 사용하게 하는 것 즉, 다른 앱이 프로세스를 점유하고 있을 때 실행된다. [용도] Notification (푸시 알림)으로 Intent 작업 수행 시 사용 바탕화면 (런쳐) 위젯에서 Intent 작업 수행 시 사용 AlarmManager 를 통해 지정된 시간에 Intent 작업 수행 시 사용 PendingIntent 생성하는방법 Activity PendingIntent.getActivity(Context, Int, Intent, Int) Service PendingIntent.getService(Context, Int, Intent, Int) Bro.. 안드로이드 앱 개발 공부/안드로이드 기본(노션 이동) 2023. 3. 4. java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences android.content.Context.getSharedPreferences(java.lang.String, int)' on a null object reference val auto =Activity().getSharedPreferences("autoLogin", MODE_PRIVATE) viewModel에서 이렇게 사용하니 Null을 참조했다면서 오류가 났다. Activity와 fragment 에서는 아래처럼 사용해서 데이터가 비어있어도 잘 처리되었는데, //Activity val auto = getSharedPreferences("autoLogin", MODE_PRIVATE) //Fragment val auto = this.requireActivity().getSharedPreferences("autoLogin", Activity.MODE_PRIVATE) Activity나 fragment 외의 class에서 사용하려니 오류가 나는 것 같았다, 그래서 activit.. 안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법 2023. 3. 4. [Android] Intent : 인텐트 인텐트는 메시징 객체로, 다른 앱 구성 요소부터 작업을 요청하는 데 사용할 수 있다. 인텐트 구성 요소 사이의 통신을 촉진하는 데는 여러가지 방식이 있지만 기본적으로는 크게 세가지로 나눌 수 있다. - 액티비티 시작 액티비티가 완료되었을 때 결과를 수신하려면, startActivityForResult()를 호출한다. 액티비티는 해당 결과를 이 액티비티의 onActivityResult() 콜백에서 별도의 Intent 객체로 수신한다. activity는 앱 안의 단일 화면을 나타낸다. activity의 새 인스턴스를 시작하려면 Intent를 startActivity()로 전달하면 된다. Intent는 시작할 액티비티를 설명하고 모든 필수 데이터를 담고 있다. - 서비스 시작 Intent는 시작할 서비스를 설.. 안드로이드 앱 개발 공부/안드로이드 기본(노션 이동) 2023. 3. 3. [Android] Fragment Life Cycle : 프레그먼트 생명주기 onAttach() 프래그먼트가 액티비티에 붙을 때 호출 인자로 Context가 주어진다. oncreate() 프래그먼트가 액티비티의 호출을 받아 생성 Bunddle로 액티비티로부터 데이터가 넘어옴 UI 초기화는 불가능 onCreateView() 레이아웃 inflate 담당 savedInstanceState로 이전 상태에 대한 데이터 제공 View와 관련된 객체를 초기화할 수 있음 onViewCreated() onCreagteView()를 통해 반환된 View 객체는 onViewCreated()의 파라미터로 전달된다. 이때 Lifecycle이 INITIALIZED 상태로 업데이트가 됨 때문에 View의 초기값 설정, LiveData 옵저빙, RecyclerView, ViewPager2에 사용될 Adapt.. 안드로이드 앱 개발 공부/안드로이드 기본(노션 이동) 2023. 3. 3. [Android] Activity LifeCycle : 액티비티 생명주기 Activity가 시작되고 종료되는 시점까지의 상태를 말한다. -활동 수명 주기 단계 간에 전환하기 위해 활동 클래스는 6가지 콜백으로 구성되어 있다. →[onCreate()], [onStart()], [onResume()], [onPause()], [onStop()], [onDestroy()] oncreate() 이 콜백은 시스템이 먼저 활동을 생성할 때 실행되는 것으로 필수적으로 구현되어야 한다. 활동이 생성되면 “생성됨” 상태가 됨. 활동의 전체 수명 주기동안 한 번만 발생해야 하는 기본 애플리케이션 시작 로직을 실행. onStart() 활동이 “시작됨” 상태에 들어가면 콜백 됨. 액티비티가 사용자에게 보이기 직전에 실행됨. BroadCast Reciever 실행. onstart()가 호출되면 활동.. 안드로이드 앱 개발 공부/안드로이드 기본(노션 이동) 2023. 3. 3. [Android] 안드로이드 4대 컴포넌트 💡컴포넌트(Component)? 컴포넌트는 구성요소라는 뜻을 갖고 있다. 각 컴포넌트는 하나의 독립된 형태로 존재하고 정해진 역할을 수행한다. 안드로이드의 4대 컴포넌트는 Activity, Service, BroadCast Receiver, content Provider 가 있다. Intent를 통해 상호작용 한다. 1. Activity Activity는 사용자가 Application과 상호작용하며 실제로 사용자에게 보이는 화면을 의미한다. 간단하게 말하면 UI화면을 담당하는 컴포넌트이다. 하나 이상의 View 또는 ViewGroup을 가지고 있어야 한다. 2. Service Service는 액티비티와는 달리 직접 상호작용하지 않는다. background에서 작업을 처리하기 위해 사용되고 그렇기 때문에 .. 안드로이드 앱 개발 공부/안드로이드 기본(노션 이동) 2023. 3. 3. [Android] Cannot resolve symbol '@+id/' 오류 레이아웃 구성할 때 아이템에 id 설정했을 때 Cannot resolve symbol 하면서 value 어쩌구 하는 방식을 추천해 주는 경우가 있는데 간단하게 고칠 수 있다! File - Invalid cacheds.. 에 들어가서 invalidate and Restart 해주면 된다 👍🏻 안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법 2023. 3. 2. Xampp로 DB - PHP - Android 연결하기 (2)_ FileZilla 와 php 2023.02.16 - [안드로이드 앱 개발 공부/앱 구현 정보 정리] - Xampp로 DB - PHP - Android 연결하기 (1)_설치 과정과 오류들 Xampp로 DB - PHP - Android 연결하기 (1)_설치 과정과 오류들 1. xampp 설치 https://www.apachefriends.org/index.html XAMPP Installers and Downloads for Apache Friends What is XAMPP? XAMPP is the most popular PHP development environment XAMPP is a completely free, easy to install Apache distribution containing Maria yeons4every.. 안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법 2023. 2. 16. Xampp로 DB - PHP - Android 연결하기 (1)_설치 과정과 오류들 1. xampp 설치 https://www.apachefriends.org/index.html XAMPP Installers and Downloads for Apache Friends What is XAMPP? XAMPP is the most popular PHP development environment XAMPP is a completely free, easy to install Apache distribution containing MariaDB, PHP, and Perl. The XAMPP open source package has been set up to be incredibly easy to install and to us www.apachefriends.org 이곳에서 자신의 pc의 운영체.. 안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법 2023. 2. 16. 이전 1 2 3 4 다음