android中activity管理及界面傳值

android中利用application類中的ActivityLifecycleCallbacks接口實現activity的管理及界面傳值


簡化界面跳轉,和界面之間的傳值和獲取

使用方法:

MainActivity中

AContext.push(SecondActivity.class, "SecondActivity");//跳轉到SecondActivity中並傳遞一個字符串

String msg = AContext.getPushData();// SecondActivity中獲取數據

ThreeActivity中:

AContext.pull("2", 3);//關閉當前activity並傳遞兩個參數,

SecondActivity獲取返回的數據

if (AContext.getPullData() != null) {

// 獲取ThreeActivity返回的數據

String one = AContext.getPullData(0);

int two = AContext.getPullData(1);

AContext.show("第一頁傳過來的值:" +one + ";" + two);

}


/**

 * activity管理類

 *

 */

publicclass ActivityManagerimplements ActivityLifecycleCallbacks {


private Activity activity;


private ArrayList<Activity> activityList = new ArrayList<Activity>();


public ArrayList<Activity> getActivityList() {

returnactivityList;

}


public void exitLogin() {

Iterator<Activity> iterator =activityList.iterator();

while (iterator.hasNext() &&activityList.size() != 1) {

iterator.next().finish();

iterator.remove();

}

}


public void setActivity(Activityactivity) {

this.activity =activity;

}


public Activity getCurrentActivity() {

returnactivity;

}


/**

* 在activity創建時記錄當前activity,並添加到集合中

*/

@Override

public void onActivityCreated(Activityactivity, Bundle savedInstanceState) {

Log.e("TAG","onActivityCreated");

setActivity(activity);

activityList.add(activity);

}


@Override

public void onActivityStarted(Activityactivity) {

Log.e("TAG","onActivityStarted");

}


/**

* 在resume中進行更新當前的activity

*/

@Override

public void onActivityResumed(Activityactivity) {

setActivity(activity);

Log.e("TAG","onActivityResumed");

}


@Override

public void onActivityPaused(Activityactivity) {

Log.e("TAG","onActivityPaused");

}


@Override

public void onActivityStopped(Activityactivity) {

Log.e("TAG","onActivityStopped");

}


@Override

public void onActivitySaveInstanceState(Activityactivity, Bundle outState) {

Log.e("TAG","onActivitySaveInstanceState");

}


/**

* 在activity銷燬時移除

*/

@Override

public void onActivityDestroyed(Activityactivity) {

Log.e("TAG","onActivityDestroyed");

activityList.remove(activity);

}


private Object[] _pullData;


/**

* 獲取回退前activity傳遞過來的參數

* @param position

* @return

*/

public <T extends Object> T getPullData(intposition) {

return isPullEmpty(position) ? (T)_pullData[position] : null;

}


private boolean isPullEmpty(intposition) {

return_pullData != null &&_pullData.length > position;

}


/**

* 關閉activity並回傳

* @param data

*/

public void pullCurrentAcivity(Object...data) {

_pullData =data;

_pushData =null;

activity.finish();

}


/**

* finish

*/

public void pullActivity() {

pullCurrentAcivity();

}


/**

* push

*/

private Object[] _pushData;


/**

* 利用索引獲取跳轉前界面傳遞的數據

* @param position

* @return

*/

public <T extends Object> T getPushData(intposition) {

return isPushEmpty(position) ? (T)_pushData[position] : null;

}


private boolean isPushEmpty(intposition) {

return_pushData != null &&_pushData.length > position;

}


/**

* 跳轉activity並傳遞參數

* @param activityClass

* @param pushData

*/

public void pushActivity(Class<?>activityClass, Object... pushData) {

_pushData =pushData;

_pullData =null;

Intent intent = new Intent(activity, activityClass);

activity.startActivity(intent);

}


          在AContext類中初始化ActivityManager並註冊

        public staticvoid init(Application currentApplication) {

sApplication =currentApplication;

sActivityManager =new ActivityManager();

sApplication.registerActivityLifecycleCallbacks(sActivityManager);

}





通過application註冊監聽activity

public class InitApplicationextends Application {

@Override

public void onCreate() {

super.onCreate();

/**

* 初始化註冊activity生命週期監聽

*/

AContext.init(this);

}

}


最後在AndroidManifest.xml中註冊application


csdn下載地址:http://download.csdn.net/detail/u010945409/9727455

github地址: https://github.com/xieyuhai/activity




發佈了49 篇原創文章 · 獲贊 17 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章