IT/Android(비공개)

Activity / Intent

상짱 2020. 3. 4. 17:22
반응형

1. 프로젝트 생성

* 프로젝트 생성시 Package Name 은 기본 App ID 가 되며, 자신만의 유일한 이름으로 지어야 한다.

* Minimum SDK 는 앱이 지원하는 최하위 아느로이드 버전이며, 해당 버전 이하의 안드로이드에서는 설치되지 않는다.

* Minimum SDK 를 선택할 때에는 앱의 핵심 기능과 지원할 디바이스의 범위를 함께 고려해야 한다.

 

2. Activity

- 안드로이드 애플리케이션을 구성하는 기본 단위이며, 사용자와 상호 작용하는 UI를 제공

 

* Activity 는 사용자에게 보여지는 단일 화면으로 사용자와 상호 작용한다.

* Activity 는 안드로이드 Application 의 기본 구성 요소이다.

* Activity 는 시스템으로부터 애플리케이션이 시작되는 진입점이 될 수 있다.

 

- Activity 파일을 만들고 나면, AndroidManifest.xml 파일에 등록되었는지 확인한다.

 

3. Intent / 화면 전환

- 안드로이드에서 앱 구성 요소 간의 작업을 요청할 수 있는 메시지 객체

- 액티비티 시작 : Activity 의 새 인스턴스를 시작하기 위해 startActivity() 메소드를 사용하여 Intent를 전달

- 서비스 시작 : Service 를 시작하기 위해 startService() 메소드를 사용하여 Intent를 전달

- 브로드캐스트 전달 : 브로드캐스트는 모든 앱이 수신할 수 있는 메세지로, sendBroadCase(), sendBroadCastOrderd(), senedStickyBroadCast() 메소드에 Intent를 전달하여 BroadCase 를 전달

 

- View 객체에 이벤트리스너를 설정하는 방법 2가지

- 코드에서 View 객체에 setOnClickListener() 메소드를 이용하는 방법

- XML 에서 메소드를 등록하는 방법

package com.example.lotto

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 코드에서 View 에 이벤트 리스너를 설정
        // Kotlin 에서는 Android Extension 덕분에 findViewById 없이 바로 접근 가능하다
        // 버튼과 같은 View 가 클릭되었을때 실행될 listener 를 등록하는 메소드가 setOnClickListener 이다
        button3.setOnClickListener {
            // MainActivity 를 시작하는 Intent 를 생성한다.
            val intent = Intent( this@MainActivity, ConstellationActivity::class.java )

            // Intent 를 사용하여 Activity 를 시작한다.
            startActivity(intent)
        }
    }

    /**
     * xml 에서 참조할 수 있는 메소드 정의
     */
    fun goName(view: View) {

        val intent = Intent(this@MainActivity, NameActivity::class.java )
        
        startActivity(intent)
        
    }
}

 

- Intent 명시적호출 / 암시적호출

- 명시적호출 : 시작할 기본 구성 요소( Activity, Service ) 등의 이름을 정확하게 알고 있을 때 사용

- 암시적 호출 : 시작할 기본 구성 요소( Activity, Service ) 등의 이름을 명확하게 적지는 않지만, 일반적인 작업 유형을 선언하여 그 작업을 수행할 수 있는 구성 요소를 호출

// 암시적 인텐트를 사용해 웹브라우저를 호출
fun callWeb(view: View) {
    val intent = Intent(Intent.ACTION_VIEW, Uri.parse("http://www.naver.com"))
    startActivity(intent)
}
/**
Activity A -> Android System -> Activity B
1. Acivity A 에서 ACTION_VIEW 를 Action 으로 Data 를 http://www.naver.com 으로 Intent 생성 전달
2. 안드로이드 시스템은 Intent 의 Action/Data 를 분석, 실행할 앱을 검색
3. 해당 Intent 를 처리할수있는 앱이 시작되면 onCreate() 메소드가 호출되며, 
Activity B는 자신이 받은 Intent 와 데이터를 확인할 수 있다.
*/

- Intent 구성요소

- Component Name : 명시적인지 암시적인지 구분

- Action : 수행할 작업을 의미

- Data : Action 에 따라 필요한 Data를 함께 보낼 때 사용

- Category : 인텐트를 처리하는 구성 요소에 대한 분류

- Extras : 작업을 수행하기 위해 필요한 추가 정보 / Key , Value 타입의 정보 전달 / Bundle 객체로 전달 할 수 있음.

- Flags : Intent 에 대한 Meta 정보.

 

* Intent 는 구성 요소 간의 작업을 요청할 수 있는 메시지 객체이다.

* Intent 의 유형에는 명시적, 암시적 유형이 있다.

* 같은 앱 내에서 화면 전환을 위해서는 명시적 Intent 를 생성하고 startActivity()함수를 사용한다.

* 명시적 Intent 를 생성하는 방법은 실행될 Component Name 을 지정하는 것이다.

* 암시적 Intent 는 Component Name 은 없고, 대신 작업 유형을 나타내는 Action 을 지정한다.

* 암시적 Intent 호출 시의 Action 과 Data 정보를 기반으로, 안드로이드 시스템은 장치 내에 설치된 적합한 앱을 실행시킨다.

 

 

반응형

'IT > Android(비공개)' 카테고리의 다른 글

[Android] View / Theme  (0) 2020.03.05
Android-studio / svn 연결  (0) 2020.03.04
4. Kotlin(코틀린)_3  (0) 2020.03.02
3. Kotlin(코틀린)_2  (0) 2020.02.26
2. Kotlin(코틀린)_1  (0) 2020.02.20
1. Android 기본  (0) 2020.02.07
Android 재시작  (0) 2020.02.07