Intent intent = new Intent(this, SubActivity.class);
intent.addFlag(Intent.FLAG_ACTIVITY_SINGLE_TOP, Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);


- FLAG_ACTIVITY_CLEAR_TOP

: 액티비티 스택 안에 호출하려는 액티비티가 있을 경우 스택 안에서 해당 액티비티 위에 있는 모든 액티비티를 삭제한다. 위 플래그가 없을 시 중간에 해당 액티비티가 머물러 있어 이동 중간에 메인 화면이 표출된다.


- FLAG_ACTIVITY_SINGLE_TOP

: 호출되는 액티비티가 최상위에 존재할 경우 다시 생성하지 않고 재사용한다. 위 플래그가 없을 시 메인 액티비티를 onCreate() 메서드를 통해 액티비티를 새로 생성하지만, 위 플래그가 있을 시 onResume() 이 호출되어 재사용한다.




Context : 앱 환경에 대한 전역적인 정보를 담고 있는 인터페이스로 Application 또는 Activity 에 대한 포괄적인 정보를 담고 있다.


Context 는 Application Context와 Activity Context로 나뉜다.


- Application Context

1. Application 자체의 생명주기에 영향을 받아 Application이 실행되고 종료될 때까지 동일한 객체 즉, 싱글턴 패턴으로 구현되어 있다.

2. getApplicationContext(), getApplication()으로 참조 가능하다.


- Activity Context

1. Activity 생명주기에 영향을 받아 onDestroy가 호출되면 사라진다.

2. getContext(), XXXActivity.this(Activity 클래스는 Context를 상속 받는다)로 참조 가능하다.



*왠만하면 Application Context를 쓰자. Application Context는 앱 실행간 동일한 객체가 계속 존재하고 Activity Context를 쓰면 객체가 사라질 가능성이 있어 메모리 누수가 발생할 수 있다. 따라서 Application Context를 주로 쓰되 뷰 관련해서 Context가 필요할 시 Activity Context를 써라.

'안드로이드 > 기본' 카테고리의 다른 글

안드로이드 mvc, mvp, mvvm  (0) 2017.06.09
SharedPreferences  (0) 2017.06.04
action.Main, category.LAUNCHER  (0) 2017.06.04
메인 화면을 single_top, clear_top으로 하자  (0) 2017.06.04
text size를 sp가 아닌 dp로 써라  (0) 2017.06.04

+ Recent posts