Activity life Cycle 은 activity의 상태정보(running, pause, stop)이 바뀌는것을 말한다

실행(running): activity가 화면에 보이면서 실행되어있는 상태로 focus가 있는상태이다

일시정지(pause): 사용자에게는 보이지만 focus를 잃은 상태이다(대화상자가 일부가리고있는경우)

중지(stop): 다른 activity에 의해 완전히 가려진 상태

 

System에서 Activity에 대한 상태정보를 관리하며 그에따른 필요한 method를 자동으로 호출한다

onCreate()

a. memory에 activity가 처음 생성될때

b. activity안에 view들을 설정할때

c. Bundle객체를 이용해 이전상태를 복원할때

d. 다음에는 onStart()가 호출된다

onStart()

a. activity가 화면에 보이기 직전에 호출

b. activity가 화면에 보이면 다음에 onResume()을 호출

c. activity가 화면에서 가려지면 다음에 onStop()호출

onResume()

a. 사용자와 상호작용하기 직전에 호출

onRestart()

a. activity가 중지된 이후에 다시 실행될때 호출

b. 다음에는 onStart()가 호출

onPause()

a. 다른 activity가 실행될때 호출된다

b. 저장되지 않은 data를 저장하는 역할

c. 이상태에서는 activity를 강제종료할수있다

onStop()

a. 더이상 화면에 보이지 않을때 호출

b. 다른 activity가 화면을 가릴때 호출

c. 이상태에서는 system에서 강제종료 가능하다

onDestroy()

a. activity가 없어지기 전에 호출

b. finish()호출되거나, system이 강제종료시키는경우 호출

 

memory에 activity가 생성되었을때 system에서 자동으로 onCreate(), onStart()를 호출

실행후 일시정지될때 onPause()가 호출된다. 일시정지후 다시 실행될때 onResume()이 실행된다.

onPause()는 일시정지나 중지상태로 변할때 호출된다. 

일시정지에서 중지상태로 갈때는 onStop()가 호출된다

중지에서 다시 실행상태로 갈때 onRestart(), onStart(), onResume()이 실행된다

소멸될때에는 onDestroy()가 호출된다.

 

activity_main.xml

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="click the below button"
android:textSize="20sp"
tools:layout_editor_absoluteX="106dp"
tools:layout_editor_absoluteY="170dp" />
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="new activity"
android:textSize="20sp"
tools:layout_editor_absoluteX="126dp"
tools:layout_editor_absoluteY="233dp"/>

activity_new.xml

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="new Activity"
android:textSize="30sp"
tools:layout_editor_absoluteX="125dp"
tools:layout_editor_absoluteY="262dp" />

NewActivity.java

public class NewActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new);

output("onCreate() call");
}
protected void onStart(){
super.onStart();
output("onStart() call");
}
protected void onRestart(){
super.onRestart();
output("onRestart() call");
}
protected void onResume(){
super.onResume();
output("onResume() call");
}
protected void onPause(){
super.onPause();
output("onPause() call");
}
protected void onStop(){
super.onStop();
output("onStop() call");
}
protected void onDestroy(){
super.onDestroy();
output("onDestroy() call");
}
public void output(String msg){
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
Log.d("new", msg);
}
}

MainAtivity.java

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button button = findViewById(R.id.btn1);

button.setOnClickListener(listener);
}
View.OnClickListener listener = new View.OnClickListener(){
public void onClick(View view){
//명시적(Explicit) intent
Intent intent = new Intent(getApplicationContext(), NewActivity.class);
startActivity(intent);
}
};
}

 

 

'android studio' 카테고리의 다른 글

android register db connection using JSP  (0) 2019.09.06
android internet check  (0) 2019.09.05
intent  (0) 2019.08.14
startActivityForResult()(화면전환)  (0) 2019.08.13
activity 추가하기  (0) 2019.08.13

+ Recent posts