Intent
intent: 우편배달부. 의사소통을 책임짐
- 액티비티와 액티비티 간
- 앱과 앱 간
타입 두 가지
1) 명시적 Intent
- 하나의 앱 내에서 액티비티와 액티비티 간 소통 시 자주.
- 보낸 이와 받는 이가 명시되어 있음
Intent intent = new Intent(this, NewActivity.class);
startActivity(intent);
보낸 이 : this(현재의 액티비티)
받는 이: NewActivity.class
2) 암시적 Intent
- 앱과 앱 간(다른 앱의 활동을 호출하여 원하는 기능을 수행, 웹 브라우저를 열어 특정 웹 페이지를 표시하거나, 연락처 앱을 열어 특정 연락처를 표시하는 등)
- 시스템 서비스 사용: Android 시스템의 여러 서비스를 활용( 이미 안드로이드에 내장되어 있는 기능) 예를 들어, 카메라 앱을 시작하여 사진을 찍는 기능, 위치 서비스를 사용하여 현재 위치를 얻는 기능 등
- 받는 사람과 보내는 사람이 명시되어있지 않음
sendIntent.setAction(Intent.ACTION_CALL);
startActivity(sendIntent);
Intent sendIntent = new Intent();
Intent 없는 상태
...
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState); //onCreate는 AppCompatActivity 클래스에 정의된 콜백메서드
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.btn_call); //Button은 view에 속한 컴퍼넌트
button.setOnClickListener(this); //this는 OnClickListener 인터페이스
}
@Override
publid void onClick(View view) {
Toast.makeText(MainActivity.this, "Click!!", Toast.LENGTH_SHORT).show();
} //여기서 this는 입력받은 매개변수인 view, 즉 클릭된 view의 컴퍼넌트인 button
//여기서 onClick은 OnClickListener 인터페이스 내부에 정의된 콜백 메서드
//즉, button이 클릭되면 '클릭되었다'는 것을 OnClickListener가 알아차리고 이에 따라 onClick 콜백 메서드가 실행됨
}
암시적 Intent
...
@Override
public void onClick(View view){
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
startActivity(intent);
}
}
명시적 Intent
...
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, CallActivity.class); //또다른 자바 클래스 activity를 생성함
startActivity(intent);
}
}
'개발 > Mobile' 카테고리의 다른 글
[Server] Http / Request(GET, POST) / Response (0) | 2023.09.17 |
---|---|
[Java] 인터페이스2, 다형성 (0) | 2023.09.17 |
[Android] 안드로이드의 주요 개념 (Activity/View/Layout/Multi Thread) (0) | 2023.09.17 |
[Java] 인터페이스 (다중 상속 / 콜백 메소드) (0) | 2023.09.17 |
[Android] Activity States / Callback graph / 다음 액티비티로 넘어가는 Intent (0) | 2023.09.16 |