android应用框架搭建,android应用框架搭建------BaseActivity

网上有不少介绍BaseActivity的博文,多数是从应用的角度去描述的。java

这里,我所介绍的BaseActivity不一样,主要从框架搭建的角度去介绍BaseActivity的使用。android

先看代码:框架

/**

* 应用程序Activity的基类

*

* @author kymjs

* @version 1.0

* @created 2013-11-24

*/

public abstract class BaseActivity extends Activity implements

OnClickListener {

private static final int ACTIVITY_RESUME = 0;

private static final int ACTIVITY_STOP = 1;

private static final int ACTIVITY_PAUSE = 2;

private static final int ACTIVITY_DESTROY = 3;

public int activityState;

// 是否容许全屏

private boolean mAllowFullScreen = true;

public abstract void initWidget();

public abstract void widgetClick(View v);

public void setAllowFullScreen(boolean allowFullScreen) {

this.mAllowFullScreen = allowFullScreen;

}

@Override

public void onClick(View v) {

widgetClick(v);

}

/***************************************************************************

*

* 打印Activity生命周期

*

***************************************************************************/

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

AppLog.debug(this.getClass() + "---------onCreat ");

// 竖屏锁定

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

if (mAllowFullScreen) {

requestWindowFeature(Window.FEATURE_NO_TITLE); // 取消标题

}

AppManager.getAppManager().addActivity(this);

initWidget();

}

@Override

protected void onStart() {

super.onStart();

AppLog.state(this.getClass(), "---------onStart ");

}

@Override

protected void onResume() {

super.onResume();

activityState = ACTIVITY_RESUME;

AppLog.state(this.getClass(), "---------onResume ");

}

@Override

protected void onStop() {

super.onResume();

activityState = ACTIVITY_STOP;

AppLog.state(this.getClass(), "---------onStop ");

}

@Override

protected void onPause() {

super.onPause();

activityState = ACTIVITY_PAUSE;

AppLog.state(this.getClass(), "---------onPause ");

}

@Override

protected void onRestart() {

super.onRestart();

AppLog.state(this.getClass(), "---------onRestart ");

}

@Override

protected void onDestroy() {

super.onDestroy();

activityState = ACTIVITY_DESTROY;

AppLog.state(this.getClass(), "---------onDestroy ");

AppManager.getAppManager().finishActivity(this);

}

}

定义一个初始化Activity控件的抽象方法initWidget();ide

像findviewbyid()这类代码就能够写在这里,不会影响代码结构了。这里须要提一点的是:setContent()方法必定要写在initWidget()里,而不能再写到oncreate里面了,看代码能够知道,initwidget方法是存在于super()中的,而若是再写到oncreate里,就至关于先调用了findview再去调用setcontent,这样确定会报空指针异常。this

关于竖屏锁定,这个能够按须要添加,没什么说的。debug

还有一个要说的就是requestWindowFeature(Window.FEATURE_NO_TITLE); // 取消标题指针

对于这段代码,若是你要使用系统的ActionBar的时候,一点要记得调用setAllowFullScreen,设置为false,不然BaseActivity自动取消了ActionBar你又去使用,确定也会出异常。调试

还有一点:Baseactivity已经实现了OnClickListener,因此子类无需再次实现,控件能够直接在initWidget里面setonclicklistener(this);而后在widgetClick(View v)中设置监听事件便可。code

有关AppManager的内容我将放到下一篇《android应用框架搭建》去讲解,这里你们能够先忽略。生命周期

有关生命周期的打印,我认为在调试阶段仍是有必要的,毕竟看着每个Activity的生命周期,若是出了问题立刻就能够清楚的知道是哪里出了问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值