인텐트 : 액티비티가 수행할 작업을 정의할 수 있는 객체임...!
-> 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가 붙어 있따.
'Android' 카테고리의 다른 글
[Android]SQLiteDatabase - 트랜잭션 & 비동기 처리 (0) | 2025.05.12 |
---|---|
[Android] 자바스크립트 인터페이스 (1) | 2025.05.08 |
[Android] Layout은 어떻게 그릴까 (0) | 2025.02.26 |
[Android] 웹뷰에 corner radius 적용하기 (feat. Java) (0) | 2025.02.26 |
[Android] WebView Url 여러개 띄우기(feat.Java) (0) | 2025.02.25 |