반응형
현재 보이는 Activity에서 새로운 Activity를 호출하면, 현재 보이는 화면 위에 쌓이는 형태가 됩니다.
이럴 경우 제일 위에 쌓은 화면이 무엇인지 궁금할 경우가 있습니다.
<실행 화면> 원할 때에 가장 위에 쌓인 액티비티를 구분할 수 있습니다.
버튼을 눌렀을 경우 새로운 Activity를 띄우는 예제입니다.
activity_main.xml 코드 ( 접는 글 )
더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="MainActivity"
android:textSize="32sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click_newActivity"
android:text="new activity"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
|
새로 띄울 SecondActivity를 만들어 줍니다.
SecondActivity의 xml은 아래와 같이 구분을 위해 표기를 했습니다.
<핵심 코드> topActivityName을 알아낼 수 있습니다.
1
2
3
4
|
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> info = manager.getRunningTasks(1);
ComponentName componentName= info.get(0).topActivity;
String topActivityName = componentName.getShortClassName().substring(1);
|
예제에서는
MainActivity 위에 새로운 화면이 쌓였을 때 ( 즉, MainActivity 가려졌을때, onStop()에 코드 기재 )
MainActivity 위에 새로운 화면이 없어졌을 때 ( 즉, MainActivity 보일때, onResume()에 코드 기재 )
두 가지 경우에 위 코드를 적용해보겠습니다.
MainActivity.java 코드 ( 접는 글 )
더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
package com.example.topactivity;
import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}// onCreate()..
@Override
protected void onResume() { // 액티비티가 화면에서 완전히 보일때 호출
super.onResume();
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> info = manager.getRunningTasks(1);
String topActivityName = componentName.getShortClassName().substring(1);
Toast.makeText(this, topActivityName, Toast.LENGTH_SHORT).show();
}
@Override
protected void onStop() { // 액티비티가 화면에 완전히 가려졌을때 호출
super.onStop();
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> info = manager.getRunningTasks(1);
String topActivityName = componentName.getShortClassName().substring(1);
Toast.makeText(this, topActivityName, Toast.LENGTH_SHORT).show();
}// onStop()..
public void click_newActivity(View view) {
Intent intent=new Intent(this, SecondActivity.class);
startActivity(intent);
}
}// MainActivity class..
|
<실행 화면> 원할때에 가장 위에 쌓인 액티비티를 구분할 수 있습니다.
반응형
'안드로이드 > 개발자 일상' 카테고리의 다른 글
안드로이드 AltBeacon ( 비콘 연결 ) (16) | 2020.04.19 |
---|---|
안드로이드 RecyclerView 리스트 이동 (삼선 이미지 드래그 시) (11) | 2020.04.13 |
안드로이드 앱 강제 종료 시점 알기 (생명 주기 onDestroy 호출 안됨) (10) | 2020.04.09 |
안드로이드 생명주기 (LifeCycle) (4) | 2020.04.08 |
안드로이드 Retrofit2+RecyclerView 1-2 (추가 밀어서 삭제,편집 ) (5) | 2020.04.06 |
댓글