티스토리 뷰
다중 액티비티, 앱 화면 전환 시 초기 설정
다중 액티비티
- 화면에 띄울 java 파일을 각각 만들어서(1페이지, 2페이지와 같이) 화면 전환 시 다른 java 파일을 화면에 나타냄
AndroidManifest.xml
- 다중 액티비티 사용 시 주의: 매니페스트 파일 내에 모든 액티비티들에 대한 정보 등록 필요
- <activity android:name=".Activity_first"/>: 불러올 파일
- <activity android:name=".MainActivity" android:exported="true"> … (중략) … </activity>: 초기 화면 파일
- <uses-permission android:name="android.permission.INTERNET" />: 앱을 통해서 인터넷 접속 허용
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.test">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Test"
android:usesCleartextTraffic="true"
tools:targetApi="31">
<activity android:name=".Activity_first"/>
<activity android:name=".MainActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</activity>
</application>
</manifest>
인텐트(Intent)
Android 시스템 내에서 컴포넌트 간의 작업(액션)을 전달하는 메커니즘
액티비티 간에 데이터를 전달하거나 특정 작업을 요청하는 객체
startActivity()
- 다른 액티비티(Activity)를 시작할 때 사용, 즉 현재 화면에서 새로운 화면으로 전환하기 위해 호출하는 매서드
- 인텐트(Intent) 객체와 함께 사용됨
인텐트(Intent)의 종류
명시적 인텐트(Explicit Intent)
- 특정 컴포넌트를 명시적으로 지정해서 실행
- 주로 같은 앱 내에서 사용
- ex) 특정 액티비티로 화면 전환
Intent intent=new Intent(getApplicationContext(), Activity_first.class);
startActivity(intent);
시작할 앱 구성 요소를 명시적으로 표시함
암시적 인텐트(Implicit Intent)
- 특정 컴포넌트를 지정하지 않고, 작업의 유형을 지정하여 이를 처리할 수 있는 컴포넌트를 Android 시스템이 선택
- 주로 다른 앱과의 상호작용에 사용
- ex) 웹 페이지 열기, 사진 공유
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.google.com"));
startActivity(intent);
시작하기 원하는 작업과 데이터 설정 후 해당 작업을 수행 가능한 앱을 선택하거나 실행하도록 함
명시적 인텐트 / 암시적 인텐트
특징 | 명시적 인텐트(Explicit Intent) | 암시적 인텐트(Implicit Intent) |
대상 지정 | 호출 대상이 명확함(클래스 이름으로 지정) | 호출 대상이 명확하지 않음(작업을 수행할 컴포넌트를 시스템이 선택) |
용도 | 같은 앱 내에서 컴포넌트 간 통신 | 외부 앱 호출이나 시스템 작업 수행 |
예시 | 화면 전환(Activity 간 이동), 서비스 시작 | 웹 브라우저 열기, 연락처 앱 열기 등 |
작업(Task)과 스택(Stack)
작업(Task)
- 사용자와 상호 작용하는 액티비티(Activity)들의 모음
- 작업과 관련된 액티비티들은 시작된 순서대로 스택에 저장됨

- 앱이 처음 시작될 때, 해당 앱과 관련된 작업이 없다면 새로운 작업이 생성되고 앱의 메인 액티비티가 스택에 저장됨
- 현재 액티비티 A가 새로운 액티비티 B를 시작시키면, 액티비티 B는 스택에 저장되고, 액티비티 A는 stop되지만 그 상태를 유지하고 있음
- 사용자가 BACK 버튼을 클릭하면 현재 액티비티B는 스택에서 제거되고(액티비티B는destroy됨), 이전 액티비티A가 재시작(resume)되어 이전 상태 복원됨
※ 해당 동작에서는 동일 액티비티의 여러 인스턴스들이 스택 내에 생성될 수 있음
FLAG_ACTIVITY_CLEAR_TOP 모드
액티비티 스택에서 특정 액티비티를 다시 실행할 때, 해당 액티비티 위에 쌓인 다른 액티비티들을 제거하는 플래그
FLAG_ACTIVITY_CLEAR_TOP 모드로 시작 시
- 해당 액티비티가 현재 작업 내에 이미 존재한다면 새로운 인스턴스를 시작시키지 않고 기존 인스턴스가 재시작됨
Intent intent=new Intent(getApplicationContext(), A1.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent)
'학업 > 모바일프로그래밍' 카테고리의 다른 글
[Android Studio] 지도 검색 앱 (0) | 2024.12.17 |
---|---|
[Android Studio] 암시적 인텐트: 작업 불러오기(전화, 연락처, 인터넷, 지도) (0) | 2024.12.17 |
[Android Studio] XML inflater 활용: 다중 화면 처리 (1) | 2024.12.15 |
[Android Studio] 기차표 예약 화면 구현 (0) | 2024.12.15 |
[Android Studio] ViewGroup, Spinner/ScrollView 예제 (0) | 2024.12.14 |
공지사항
링크