액티비티에서 실행 중인 서비스의 데이터를 사용하고 싶을 때 사용합니다. 서비스에 접속하고 서비스의 값을 가져와 사용할 수 있습니다. 서비스 만들기 먼저 서비스를 하나 구현하도록 하겠습니다. New > Service > Service를 누르고 서비스를 하나 생성해줍니다. 아래와 같이 코드를 작성하였습니다. class IPCService : Service() { var value = 0 var thread: ThreadClass? = null override fun onBind(intent: Intent): IBinder { TODO("Return the communication channel to the service.") } override fun onStartCommand(intent: Intent?,..
intent action을 통하여 기본으로 제공되는 앱에 접근을 할 수 있습니다. https://developer.android.com/guide/components/intents-common?hl=ko 공통 인텐트 | Android 개발자 | Android Developers An intent allows you to start an activity in another app by describing a simple action you'd like to perform (such as "view a map" or "take a picture") in an Intent object. This type of intent is called an implicit intent because… developer.a..
안드로이드에서 다른 앱을 실행하는 방법을 알아보겠습니다. 안드로이드 프로젝트를 만들면 AndroidManifest.xml이 기본적으로 생깁니다. intent-filter를 통해 앱의 이름이나 카테고리를 정합니다. 다른 앱을 실행하기 위해서 그 앱의 intent-filter의 action name이 필요합니다. 다른 앱의 action name을 얻기 위해서 QuickShortcutMaker를 설치하였습니다. Chrome의 action name은 com.android.chrome으로 나와있습니다. 아래와 같이 코드를 작성하면 됩니다. val intent = packageManager.getLaunchIntentForPackage("com.android.chrome") startActivity(intent) ..
Intent를 사용하여 객체를 전달하고 싶을 때 Parcelable을 사용하면 됩니다. ParcelableClass 만들기 Parcelable을 상속받는 ParcelableClass를 만들겠습니다. 먼저 전체 코드는 아래와 같습니다. class ParcelableClass : Parcelable { var number: Int = 0 var name: String? = null companion object { @JvmField val CREATOR : Parcelable.Creator = object : Parcelable.Creator { override fun createFromParcel(source: Parcel?): ParcelableClass { val data = ParcelableClas..
AsyncTask는 비동기 처리를 위해 제공되는 Class입니다. Thread와 Handler를 같이 사용하여 Ui와 데이터 처리를 했던 것을 AsyncTask로 편하게 처리할 수 있습니다. AsyncTask의 구조로는 아래와 같습니다. onPreExecute - doInBackground 전에 실행됩니다. Main Thread에서 처리합니다. doInBackground - 일반 Thread에서 처리합니다. onProgressUpdate - doInBackground에서 publishProgress를 호출하면 Main Thread가 처리합니다. onPostExecute - doInBackground 후에 실행됩니다. Main Thread에서 처리합니다. class AsyncTaskActivity : Ap..
일정 작업을 반복해서 처리해야 될 때가 있습니다. Handler를 사용하면 편하게 처리할 수 있습니다. Handler 사용하기 class MainActivity : AppCompatActivity() { var handler: Handler? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) handler = Handler() handler?.post(Thread2()) } inner class Thread2 : Thread() { override fun run() { textView.text = "${System.c..
비동기 처리를 하기 위해 사용합니다. 버튼을 클릭하면 현재 시간을 초 단위로 가져오는 코드를 작성해 보았습니다. class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { textView.text = "${System.currentTimeMillis()}" } } } 실행하면 아래와 같이 동작합니다. 버튼을 클릭했을 때 시간이 나오도록 하고 싶은 게 아니라 실시간으로 바뀐 시간을 출력하고 싶어서 코드를 아래와 같이..