반응형

안드로이드 모든 액티비티 종료



구글링 해보니 모든 액티비티를 종료하는 방법에 여러가지가 있었다.


이것 저것 해보니 귀차니즘 발동...


먼저 ActivityManager 클래스를 작성한다.

이 클래스에서 모든 액티비티를 ArrayList에 담아서 가지고 있도록 한다.

ActivityManager클래스는 singleton으로 구현.

package com.example.activitytest.manager;


import java.util.ArrayList;


import android.app.Activity;


public class ActivityManager {


private static ActivityManager activityMananger = null;

private ArrayList<activity> activityList = null;

private ActivityManager() {

activityList = new ArrayList<activity>();

}

public static ActivityManager getInstance() {

if( ActivityManager.activityMananger == null ) {

activityMananger = new ActivityManager();

}

return activityMananger;

}

/**

* 액티비티 리스트 getter.

* @return activityList

*/

public ArrayList<activity> getActivityList() {

return activityList;

}


/**

* 액티비티 리스트에 추가.

* @param activity

*/

public void addActivity(Activity activity) {

activityList.add(activity);

}

/**

* 액티비티 리스트에서 삭제.

* @param activity

* @return boolean

*/

public boolean removeActivity(Activity activity) {

return activityList.remove(activity);

}

/**

* 모든 액티비티 종료.

*/

public void finishAllActivity() {

for (Activity activity : activityList) {

activity.finish();

}

}

}



다음으로 Activity를 상속받은 ParentActivity 클래스를 하나 작성하고 ParentActivity 상속 받아서

새로운 Activity를 작성한다.

ParentActivity 클래스에서는 onCreate()메소드가 호출(새로운 Activity가 생성)될 때 마다 생성된 Activity를 

ActivityManager 클래스를 통해 ArrayList<Activity>에 add시킨다.


package com.example.activitytest.manager;


import android.app.Activity;

import android.os.Bundle;

import android.widget.Toast;


public class ParentActivity extends Activity {


private ActivityManager am = ActivityManager.getInstance();

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

am.addActivity(this);

}

@Override

protected void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

am.removeActivity(this);

}

@Override

public void onBackPressed() {

// TODO Auto-generated method stub

super.onBackPressed();

// 뒤로가기 버튼 클릭시

Toast.makeText(getBaseContext(), "모든 액티비티 종료.", Toast.LENGTH_SHORT).show();

am.finishAllActivity();

}

}


그림으로 정리하면.








결론은 ParentActivity 클래스를 상속받아서 Activity를 구현해서 개발하면 된다.


모든 액티비티를 종료하려면 ActivityManager 클래스의 finishAllActivity() 메소드를 호출해서 종료시키면 된다.




ActivityManager클래스와 ParentActivity클래스에 필요한 메소드 잘 구현해서 써먹도록 하자.


// 프로젝트 파일 첨부.

AndroidAllActivityTest.zip






반응형

+ Recent posts