Android

백그라운드 처리 – 모던 안드로이드 (오준석의 생존코딩)

  모던 안드로이드 #16 [백그라운드 처리]   https://www.youtube.com/watch?v=ZqhrZ8_3jlg&list=PLxTmPHxRH3VXHOBnaGQcbSGslbAjr8obc&index=17   상황별 백그라운드 처리를 위한 API는? 예제를 위한 뼈대 만들기 AsyncTask를 대신할 Java 비동기 처리 솔루션 LiveData 연동하여 UI 유지하기 JobIntentService WorkManager WorkManager + ViewModel로 UI 동기화        1. 상황별 백그라운드 처리를 위한 API는?     모던 안드로이드 백그라운드 작업   Service 1. 오래 걸리는 처리 2. 백그라운드 작업시 사용 3. 기본적으로 UI Thread이며, 별도의 스레드 처리 // UI Thread 라서 UI에 영향을 줌 4. 다른 컴포넌트에 bind 할 수 있음 5. startService()로 시작, stopService()로 종료 6. 서비스 내에서 stopSelf()로…

Read More
Android

Navigation – 모던 안드로이드 (오준석의 생존코딩)

Navigation – 모던 안드로이드 (오준석의 생존코딩)   https://www.youtube.com/watch?v=MHRt52NNzh0&list=PLxTmPHxRH3VXHOBnaGQcbSGslbAjr8obc&index=11     1. MainFragment 생성 (버튼 한개 생성) 2. SecondFragment 생성 (텍스트뷰 한개 생성) 3. res 폴더에서 navigation Directory 생성 (Resource type : navigation) 4. navigation 폴더에서 Navigation Resource File 생성 (파일명 : nav_graph.xml) 5. + 메뉴를 클릭하고 MainFragment 와 SecondFragment 를 화면에 배치 6. MainFragment 에서 SecondFragment 로 화살표로 이어줌 (액션 추가) 7. MainActivity 레이아웃에서 NavHostFragment 추가 8. MainFragment 에 있는 버튼을 눌렀을 때 SecondFragment 로 이동하기   @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); view.findViewById(R.id.button).setOnClickListener(new…

Read More
Android

Navigation (android developers)

    https://developer.android.com/guide/navigation/navigation-getting-started#java   Overview Get started with the Navigation component Design navigation graphs Nested navigation graphs Global actions Navigate to a destination Conditional navigation      1. Overview # Navigation component 다음 세가지로 구성됨 Navigation graph: 내비게이션 관련 정보들이 들어있는 XML 리소스 NavHost: 빈 컨테이너 (destination 을 표시), NavHostFragment NavController: destination 교체 담당         2. Get started with the Navigation component     Create a navigation graph   1. res 디렉토리에서 New > Android Resource File 2. 파일이름 : nav_graph 3. 리소스 타입 : Navigation  …

Read More
Android

WorkManager (android developers)

  WorkManager   https://developer.android.com/topic/libraries/architecture/workmanager#java   Overview Getting started How-To Guides : Define work requests How-To Guides : Work States How-To Guides : Managing work How-To Guides : Observing intermediate Worker progress How-To Guides : Chaining Work Threading in Worker Support for long-running workers       Schedule tasks with WorkManager   WorkManager는 지연 가능한 비동기 작업을 쉽게 예약할 수 있는 API로, 앱이 종료되거나 기기가 다시 시작되더라도 실행될 수 있습니다. WorkManager API는 FirebaseJobDispatcher, GcmNetworkManager, JobScheduler를 비롯하여 모든 이전 Android 백그라운드 예약 API를 대체할 수 있는 적합하고 권장되는 API입니다. WorkManager는 API 수준…

Read More
Android

ViewModel (android developers)

  ViewModel Overview   https://developer.android.com/topic/libraries/architecture/viewmodel#java       ViewModel 클래스는 수명 주기를 고려하여 UI 관련 데이터를 저장하고 관리하도록 설계되었습니다. ViewModel 클래스를 사용하면 화면 회전과 같이 구성을 변경할 때도 데이터를 유지할 수 있습니다.   Android 프레임워크는 activity및 fragment 같은 UI 컨트롤러의 수명 주기를 관리합니다. 시스템에서 UI 컨트롤러를 제거하거나 다시 만들면 컨트롤러에 저장된 일시적인 모든 UI 관련 데이터가 손실됩니다. 예를 들어 앱은 activity 중 하나에 사용자 목록을 포함할 수 있습니다. 화면 회전때문에 activity 가 다시 생성되면 새 activity 는 사용자 목록을 다시 가져와야 합니다. 데이터가 단순한 경우 활동은 onSaveInstanceState() 메서드를 사용하여 onCreate()의…

Read More
Android

LiveData (android developers)

    LiveData Overview   https://developer.android.com/topic/libraries/architecture/livedata     LiveData 는 관찰 가능한 데이터 홀더 클래스입니다. 일반적인 observable 와 다르게 LiveData 는 수명 주기를 인식합니다. 즉, 액티비티, 프래그먼트, 서비스와 같은 다른 앱 컴퍼넌트들의 수명주기를 고려합니다. 이러한 수명 주기 인식을 통해 LiveData는 active 수명주기 상태에 있는 앱 컴퍼넌트 observer 만을 업데이트합니다.   LIveData 는 수명주기가 STARTED 또는 RESUMED 상태일 때 observer (Observer class) 를 active 상태로 파악합니다. LiveData 는 active 상태인 observer 에게만 업데이트를 알립니다.     Work with LiveData objects   1. 특정 데이터를 담은 LiveData 객체를 생성합니다. 보통 ViewModel 클래스에…

Read More
Android

겜팔이의 안드로이드 세뇌교실 (안드로이드)

액티비티 인텐트 뷰 – Widget, Layout, Event Fragment ViewPager, TabLayout SharedPreferences 동적 뷰 생성 (ArrayList 이용) RecyclerView Thread, Log Glide 서버-클라이언트, Okhttp, JSON 카메라 최종 10강 완결 소스 UUID 사용     https://www.youtube.com/playlist?list=PLG9ohJAOA2PBtTBlGkmzk6_MuaUQBg_pw     https://github.com/g82/Anstagram/releases     액티비티   윈도우의 창과 같음. UI를 보여주고, 행동도 함.   package com.example.mytestapp1;   import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log;   public class MainActivity extends AppCompatActivity {   public static final String TAG = “MainActivity”; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }   @Override protected void onStart() { super.onStart(); Log.d(TAG, “onStart”); }…

Read More
Android

겜팔이의 안드로이드 세뇌교실 (자바)

  자료형 배열, 반복문(for, while) 클래스, 상속 예외 인터페이스     https://www.youtube.com/playlist?list=PLG9ohJAOA2PBtTBlGkmzk6_MuaUQBg_pw     자료형   public class HelloWorld{   public static void main(String []args){ int number = 100; long myBigNumber = 123456123456L; String myString = “hihihi”; char myChar = ‘A’; float myFloat = 123.456f; System.out.println(number); System.out.println(myBigNumber); System.out.println(myString); System.out.println(myChar); System.out.println(myFloat); System.out.println(myString + number); } }   ——————————————————–   100 123456123456 hihihi A 123.456 hihihi100           배열, 반복문(for, while)   import java.util.Random;   public class HelloWorld{   public static void main(String []args){ Random random = new Random();…

Read More
Android

View Binding, Data Binding (android developers)

  View Binding Data Binding Library   View Binding https://developer.android.com/topic/libraries/view-binding#java   Data Binding https://developer.android.com/topic/libraries/data-binding#java   View Binding     모듈 레벨 build.gradle 파일   android { … buildFeatures { viewBinding true } }       바인딩 클래스를 만들지 않으려면 루트 뷰에다가 추가 <LinearLayout     …     tools:viewBindingIgnore=”true” >     … </LinearLayout>     바인딩 클래스 자동 생성 (클래스 이름은 camel case 그리고 뒤에 Binding이 붙음) result_profile.xml -> ResultProfileBinding   <LinearLayout … >     <TextView android:id=”@+id/name” />     <ImageView android:cropToPadding=”true” />     <Button android:id=”@+id/button”…

Read More