public staticvoid init(Application currentApplication) {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並註冊
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