Android

[Android] Intent

김한토 2025. 2. 28. 15:31
반응형

인텐트 : 액티비티가 수행할 작업을 정의할 수 있는 객체임...!
-> startActivity 함수에 인자로 전달하면 댐

 

Android 에서 Intent를 통해 putExtra로 데이터를 전달할때, Bundle에 저장되는 데이터의 크기가 1MB로 제한되어 있는 이유는?

=> Binder라는 안드로이드 IPC 메커니즘 때문이다. 큰 데이터를 전달하면 시스템 리소스(메모리, CPU 등)를 과도하게 사용하게 되어, 전체 시스템의 성능이 저하될 수 있다.  큰 데이터를 전달하면 메모리 부족으로 인해 앱이 강제 종료되거나 시스템이 불안정해질 수 있다. 예외는 Binder가 처리할 수 있는 데이터 크기를 초과했을 때 발생한다.

 

 

Java에서 Intent를 사용한 화면 전환 예제

// MainActivity에서 SecondActivity로 이동
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("message", "안녕하세요!"); // 데이터 전달
startActivity(intent);

👉 받는 쪽 (SecondActivity.java)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    
    Intent intent = getIntent();
    String message = intent.getStringExtra("message");
    Log.d("SecondActivity", "받은 메시지: " + message);
}

 

Kotlin에서 Intent를 사용한 화면 전환 예제

// MainActivity에서 SecondActivity로 이동
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("message", "안녕하세요!")
startActivity(intent)

 

👉 받는 쪽 (SecondActivity.kt)

class SecondActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)

        val message = intent.getStringExtra("message")
        Log.d("SecondActivity", "받은 메시지: $message")
    }
}

 

this 가 context가 될수 있는 이유?

상위 계층에서 상속 -> type hierachy를 보면 context 클래스가 존재하는 것을 확인할 수 있음. 액티비티에 상위 계층중에 컨텍스트 타입이 존재하기  때문에 this로 컨텍스트 타입을 전달할 수 있었던거임 ㅇㅇ

 

:class.java?
=> Kotlin에서 클래스의 Java Class 객체를 얻기 위해 사용하는 표현

Kotlin은 JVM(Java Virtual Machine) 위에서 동작하므로, Java와의 호환성을 유지해야 한다. 

::class.java는 Kotlin 클래스를 Java의 Class 객체로 변환한다. 

 

그래서 잘보면 코틀린 코드에만.java가 붙어 있따. 

반응형