在安卓应用中,经常需要Activity中经常需要有大量相似的Activity类,这些类往往有相似的结构与功能,因此产生了大量重复代码,为此,以下提供一种方法有效的降低了代码冗余。

定义Activity工具类

 *      应用程序Activity管理类:用于Activity管理和应用程序退出* 修订历史 :* * ============================================================**/public class AppManager {private static Stack<Activity> activityStack;private static AppManager instance;private AppManager(){}/*** 单一实例*/public static AppManager getAppManager(){if(instance==null){instance=new AppManager();}return instance;}/*** 添加Activity到堆栈*/public void addActivity(Activity activity){if(activityStack==null){activityStack=new Stack<Activity>();}activityStack.add(activity);}/*** 获取当前Activity(堆栈中最后一个压入的)*/public Activity currentActivity(){Activity activity=activityStack.lastElement();return activity;}/*** 结束当前Activity(堆栈中最后一个压入的)*/public void finishActivity(){Activity activity=activityStack.lastElement();finishActivity(activity);}/*** 结束指定的Activity*/public void finishActivity(Activity activity){if(activity!=null){activityStack.remove(activity);activity.finish();activity=null;}}/*** 结束指定类名的Activity*/public void finishActivity(Class<?> cls){for (Activity activity : activityStack) {if(activity.getClass().equals(cls) ){finishActivity(activity);}}}/*** 结束所有Activity*/public void finishAllActivity(){for (int i = 0, size = activityStack.size(); i < size; i++){if (null != activityStack.get(i)){activityStack.get(i).finish();}}activityStack.clear();}/*** 退出应用程序*/public void AppExit(Context context) {try {finishAllActivity();ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);activityMgr.restartPackage(context.getPackageName());System.exit(0);android.os.Process.killProcess(android.os.Process.myPid());} catch (Exception e) { }}
}

定义Activity基类

public abstract class BaseActivity extends Activity implements OnClickListener {/*** Android生命周期回调方法-创建*/@Overridepublic void onCreate(Bundle paramBundle) {super.onCreate(paramBundle);// 设置没有标题// requestWindowFeature(Window.FEATURE_NO_TITLE);mContext = this;app = (AmbowApplication) getApplication();AppManager.getAppManager().addActivity(this);initView();}/*** Android生命周期回调方法-销毁*/@Overrideprotected void onDestroy() {AppManager.getAppManager().finishActivity(this);super.onDestroy();}@Overrideprotected void onResume() {super.onResume();overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);}@Overrideprotected void onPause() {super.onPause();}/*** 初始化界面*/private void initView() {loadViewLayout();findViewById();processLogic();setListener();}/*** find控件*/protected abstract void findViewById();/*** 加载布局*/protected abstract void loadViewLayout();/*** 后台获取数据*/protected abstract void processLogic();/*** 设置监听*/protected abstract void setListener();

将获取布局,获取View,获取后台数据,设置监听设置为抽象方法,使得子类继承时必须要实现。

子类对抽象方法的实现

    @Overrideprotected void findViewById() {newsLv = (ListView) this.findViewById(R.id.news_lv);gallery = (MyGallery) galleryView.findViewById(R.id.gallery);galleryRl = (RelativeLayout) galleryView.findViewById(R.id.rl_gallery);bannerTv = (TextView) galleryView.findViewById(R.id.banner_tv);addMoreBtn = (TextView) addMoreView.findViewById(R.id.btn_add_more);}@Overrideprotected void loadViewLayout() {setContentView(R.layout.news_list_layout);galleryView = View.inflate(mContext, R.layout.gallery_layout, null);addMoreView = View.inflate(mContext, R.layout.add_more, null);setTitleBarView(false, "资讯", -1, true);}@Overrideprotected void processLogic() {newsLv.addHeaderView(galleryView);eduNewsList = new ArrayList<NewsListEntity.News>();newsLv.addFooterView(addMoreView);
//      getTopNewsData();}@Overrideprotected void setListener() {addMoreBtn.setOnClickListener(this);newsLv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {Intent detailIntent = new Intent(mContext,NewsDetailActivity.class);if (eduNewsList.size() > arg2 - 1) {detailIntent.putExtra("id", eduNewsList.get(arg2 - 1).Id);startActivity(detailIntent);}}});

Android之Activity框架相关推荐

  1. android 最新框架组合,android 官方mvp框架优化:lifecycle-mvp,像前端那样组合式写页面...

    目录 1 前言 虽然在标题上,自己很随意的起了这么一个名字.其实并不是说它起个英文名就牛逼了.说白了,它其实就是mvp的思想加了lifecycle-component,然后加入了分层的思想,最后用Ty ...

  2. android原生组件,XUI: 一个简洁而优雅的Android原生UI框架,解放你的双手!

    XUI 一个简洁而又优雅的Android原生UI框架,解放你的双手!还不赶紧点击使用说明文档,体验一下吧! 涵盖绝大部分的UI组件:TextView.Button.EditText.ImageView ...

  3. Android常用ui,XUI: 一个简洁而优雅的Android原生UI框架,解放你的双手!

    XUI 一个简洁而又优雅的Android原生UI框架,解放你的双手!还不赶紧点击使用说明文档,体验一下吧! 涵盖绝大部分的UI组件:TextView.Button.EditText.ImageView ...

  4. Android的MVC框架

    http://www.cnblogs.com/wanghafan/archive/2012/07/20/2600786.html MVC是当前比较流行的框架,随便Google下,就可以发现几乎所有的应 ...

  5. android炫酷叼ui,XUI: 一个简洁而优雅的Android原生UI框架,解放你的双手!

    XUI 一个简洁而又优雅的Android原生UI框架,解放你的双手!还不赶紧点击使用说明文档,体验一下吧! 涵盖绝大部分的UI组件:TextView.Button.EditText.ImageView ...

  6. Android 支付宝 开源框架

    下面整理了支付宝 Android 客户端使用的开源组件,觉得对你们有帮助的可以看下: 1.FFmpeg FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.它包括了目 ...

  7. android 模仿微信布局,【Android初学者】框架布局:仿微信页面制作

    学习Android有一段时间了,跟大家分享一下经验吧! 如果有错误的地方,有更好的方法,麻烦大家留言指导! 工具:studio2.2,虚拟机版本:4.3,API 18(感觉比5.1的稳定啊!) 例子是 ...

  8. android 英语论文,Android中Activity的生命周期英语论文+译文.doc

    Android中Activity的生命周期英语论文译文 北方民族大学 英文文献翻译 论文题目: Android环境及Activity介绍 院(部)名 称: 计算机科学与工程学院 学 生 姓 名: 陈 ...

  9. Android UI 测试框架Espresso详解

    Android UI 测试框架Espresso详解 1. Espresso测试框架 2.提供Intents Espresso 2.1.安装 2.2.为Espresso配置Gradle构建文件 2.3. ...

最新文章

  1. TypeError: ‘instancemethod‘ object has no attribute ‘__getitem__‘
  2. mysql数据库主键自增6_mysql数据库,主键自增主键不连续
  3. Exchange 2007 迁移 2010
  4. 绘画 某种字体 以某种折行规则 最后画出的text有多大
  5. [vue] prop是怎么做验证的?可以设置默认值吗?
  6. 永和自适应官网代理系统模块V6.0.8
  7. JavaScript this绑定规则
  8. 【python基础知识】对文本数据库的一些基本操作
  9. CentOS配置主机名和主机映射
  10. Python 处理前端反调试(无限debugger)
  11. Git命令行介绍和使用说明(持续更新)
  12. 2017/12/29
  13. [转]各类文件对应的Content-Type
  14. C++ QT中国象棋双人单机对战代码总结
  15. 数值分析思考题 (钟尔杰版) 参考解答——第三章
  16. Window Mobile map solutions
  17. 北京喜提初雪,Edg喜夺冠军
  18. 满分考生进入清华学造芯片,集成电路学院院长亲自带,网友:为中华之崛起而读书...
  19. 快递查询—API接口
  20. 键盘各个键所对应的键值

热门文章

  1. Android自定义Lint实践
  2. 美团AI全景图:吃喝玩乐背后的黑科技
  3. Android自动化测试探索
  4. java.lang.NoClassDefFoundError: * : Landroid/support/v7/gridlayout/R$styleable 异常终极解决办法
  5. 【LeetCode】3月30日打卡-Day15
  6. VS2010中的路径设置
  7. [Swift]LeetCode19. 删除链表的倒数第N个节点 | Remove Nth Node From End of List
  8. K-Means ++ 算法
  9. 数据库一对一,一对多,多对多关系
  10. itextsharp c# asp.net 生成 pdf 文件