根据设计图打好基本框架,准备好用于统一输出的Log类,用于其他Activities与Fragments继承的基类ActivityBase与FragmentBase、统一的工具栏Utils、完成初始化MyApplication等
ActivityBase 类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Log.I(L, "onCreate: " + this);
//获取设备的实际像素
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
sDisplayHeight = displaymetrics.heightPixels;
sDisplayWidth = displaymetrics.widthPixels;
setContentView(R.layout.activity_base);
mFrameContainer = (FrameLayout) findViewById(R.id.fragmentContainer);
View v = getView();
if(v!=null)
{
mFrameContainer.addView(v);
}
}
布局文件R.layout.activity_base中只有FrameLayout,子类统一通过getView()方法实现各自布局;获取设备实际像素以便实现适配。
private BroadcastReceiver mNetworkStatusReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
checkNetwork();
};
};
@Override
protected void onStart() {
super.onStart();
Log.I(L, "onStart: " + this);
//注册网络状态接收器
if (!mIsNetworkStatusReceiverRegisterred) {
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mNetworkStatusReceiver, filter);
mIsNetworkStatusReceiverRegisterred = true;
}
EventBus.getDefault().registerSticky(this);
}
在onStart()中注册网络状态接收器与EventBus
@Override
protected void onStop() {
super.onStop();
Log.I(L, "onStop: " + this);
//不活跃时注销网络状态接收器
if (mIsNetworkStatusReceiverRegisterred) {
unregisterReceiver(mNetworkStatusReceiver);
mIsNetworkStatusReceiverRegisterred = false;
}
EventBus.getDefault().unregister(this);
}
在onStop()中注销网络状态接收器与EventBus
@Override
protected void onResume() {
super.onResume();
if (!Utils.isNetworkConnected()) {
}
}
在onResume()中检查网络连接状况
private void checkNetwork() {
if (!Utils.isNetworkConnected()) {
Utils.showMessage(this, R.string.network_error, true);
}
}
receiver中检查网络状况的方法
protected View getView(){return null;}
public void onEventBackgroundThread(Message msg){}
public void onEventMainThread(Message msg){}
public void onEventAsync(Message msg){}
public void onEvent(Message msg){}
EventBus应用于不同状况的方法,子类根据需要复写
FragmentBase中也在其生命周期中注册相应的EventBus
Utils提供SD上文件存储、检查网络、检查权限、SharedPreferences存储等方法。
MyApplication中初始化Universal Image Loader、FlatUi、以及向服务器请求基本布局信息以便更新界面。