在项目当中构建一个BaseActivity,这个BaseActivity继承了Activity,但是它确实所有项目当中的Activity的parents。在BaseActivity当中可以实现许多继承功能,这个会使项目当中的Activity开发起来更快,不用重复写许多的基础功能,而且封装的很整洁。
我下面就以公司的项目中BaseActivity实现的功能举例:
1,判断网络是否连接上了。
public boolean isGoodNet() {
ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo networkinfo = manager.getActiveNetworkInfo();
if (networkinfo == null || !networkinfo.isAvailable()) {
Toast.makeText(this, "网络异常",Toast.LENGTH_SHORT).show();
return false;
}
return true;
}
2,注册退出事件监听,在onDestory当中可以使用到
public void regListener() {
exitre = new ExitListenerReceiver();
IntentFilter intentfilter = new IntentFilter();
intentfilter.addAction(this.getPackageName() + "."
+ "ExitListenerReceiver");
this.registerReceiver(exitre, intentfilter);
}
3,设定退出菜单
public void quit(boolean menu) {
if (menu) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("退出");
builder.setTitle(getResources().getString(R.string.app_name));
builder.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
System.exit(0);
}
});
builder.setNegativeButton("取消", null);
builder.create().show();
} else {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(),
"再按一次退出" + getResources().getString(R.string.app_name),
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
}
}
}
4,封装一个Toast。
public final void showMessage(String message) {
if(!message.equals("")){
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
}
总结:BaseActivity其实可以做许多东西,它很好的体现了面向对象变成的特点,封装,继承,多态等。以后的每个项目都应该先封装一个该内容。
补充:再添加三个抽象函数
<pre name="code" class="java">abstract <span style="font-family: 宋体;">public void getIntentDatas();</span>
abstract <span style="font-family: 宋体;">public</span><span style="font-family: 宋体;"> void initViews();</span>
abstract <span style="font-family: 宋体;">public</span><span style="font-family: 宋体;"> void getDatas();</span>