【App框架】有关App框架的编写感悟
2015-11-17 12:01
519 查看
这几天受一本书的影响学习到了很多有关于App整体框架编写的感悟(这里的框架不是第三方框架,指的是空数据时候的壳)这本书真的很不错,有条件的话,或是真的觉得有必要的话可以来看看,这本书的名字叫做《App研发录》。
1.首先这本书介绍了一种很不错的编程模式,定义BaseActivity来规范代码编写或重建新的生命周期,已达到将公共的代码抽到父类的目的。
BaseActivity代码:
相对应的子类Activity的代码:
这部分代码很好的封装了生命周期,以及公共的代码,使代码更加规范,还有提供了一种编程思路,抽象类中定义一些方法,当程序维护加新功能的时候,只要在抽象类中直接添加即可,这样实现了分离的感觉。
2.关于OnclickListener的书写
平时很喜欢用接口 implements OnClickListener,再实现其方法来实现监听的方法,一种好的建议是使用 组件.setOnClickListener 来实现监听书写,这只是一种推荐,好处就是当使用接口的时候,所有堆放的R.id.XXXX看起来不是很方便,不如后者可读性上面更好一点。
3.注意细节问题
在json数据解析的过程中,接口后台人员不可能保证所有的数据都不为空,所以这里有种思路就是当解析的数据为空时候,为其指定一个值,这样就可以达到不为空,并且可以判断了。
大致这几点需要注意,书里还有很多关于Crash的分析,这里不再介绍,后面书中封装了网络请求,但是我觉得不如直接用现有的框架比较好,除此之外,我分享下我写整体框架的时候的一些经验。
1.使用butterknife框架来简化书写
使用注释型的butterknife来编写省去了书写findViewById的麻烦,但是有些地方还是免不去写一些findId,不过使用后确实省了不少事情。
2.封装项目中经常使用的方法
随着项目不断的开发,一些经常在项目中的方法,可以封装成一个工具类库,来简化每次都要写同样代码的蛋疼,同时,在学习封装方法的时候,你会接触到很多的新东西。
3.老生常谈的命名规范
我主张的还是最好用英文,全部用英文,否则就全部都用拼音,不过很多情况下,很多人喜欢使用拼音+英文这种,但是我觉得这种写法有点酸爽。。,为了标准我觉得还是全部英文比较好,其次一些注意事项做了很多年开发的大牛我就不说了,这里有一个链接,如果不明白的话可以看一看。
/article/1970422.html
除此之外,可能有些功能有些Activity是同一个xml中的,比如侧滑菜单中的组件,组件中可能会有一些选项跳到其他页面中,像这种同一个组建下的跳转的目标Activity或是Fragment,我认为为了比较好找,最好在前面加上一些前缀,例如在侧栏里的SettingsActivity可以写成SlidingMenu_SettingsActivity虽然可能命名长了一点,但是Activity一多的话,很快就能找到了,不用再想哪个是侧滑菜单里面的。
4.还有一些需要注意的地方
以前有一个小的总结
/article/8665337.html
这篇文章有时间还会再次总结会。
欢迎大家也来交流,一起学习,或是有什么好的点子好的资源,共同分享。
1.首先这本书介绍了一种很不错的编程模式,定义BaseActivity来规范代码编写或重建新的生命周期,已达到将公共的代码抽到父类的目的。
BaseActivity代码:
<span style="font-size:18px;">package com.songfeng.baixiaoshength.activity; import com.icb.Screen.X_ScreenUtil; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.Window; /** * 基类Activity * @author WindStory * */ public abstract class BaseActivity extends FragmentActivity{ @Override public void onCreate(Bundle savedInstanceState) { X_ScreenUtil.setFullScreen(this);//requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); this.initView(savedInstanceState); this.initData(); this.initLisenter(); } /** * 初始化View * @param savedInstanceState */ protected abstract void initView(Bundle savedInstanceState); /** * 初始化Data数据 */ protected abstract void initData(); /** * 初始化监听器 * 推荐用 Button.setOnclickLisener()方法来实现 */ protected abstract void initLisenter(); @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } @Override protected void onStart() { super.onStart(); } @Override protected void onResume() { super.onResume(); } @Override protected void onPause() { super.onPause(); } @Override protected void onStop() { super.onStop(); } @Override protected void onDestroy() { super.onDestroy(); } /** * 跳转Activity页面 */ public void startActivity(Activity activity,Class<?> cls){ activity.startActivity(new Intent(activity, cls)); } } </span>
相对应的子类Activity的代码:
<span style="font-size:18px;">package com.songfeng.baixiaoshength.activity; import com.songfeng.baixiaoshength.R; import android.os.Bundle; /** * 设置页面 * @author WindStory * */ public class SlideMenu_MySettingsActivity extends BaseActivity{ @Override protected void initView(Bundle savedInstanceState) { setContentView(R.layout.activity_settings); } @Override protected void initData() { } @Override protected void initLisenter() { } } </span>
这部分代码很好的封装了生命周期,以及公共的代码,使代码更加规范,还有提供了一种编程思路,抽象类中定义一些方法,当程序维护加新功能的时候,只要在抽象类中直接添加即可,这样实现了分离的感觉。
2.关于OnclickListener的书写
平时很喜欢用接口 implements OnClickListener,再实现其方法来实现监听的方法,一种好的建议是使用 组件.setOnClickListener 来实现监听书写,这只是一种推荐,好处就是当使用接口的时候,所有堆放的R.id.XXXX看起来不是很方便,不如后者可读性上面更好一点。
3.注意细节问题
在json数据解析的过程中,接口后台人员不可能保证所有的数据都不为空,所以这里有种思路就是当解析的数据为空时候,为其指定一个值,这样就可以达到不为空,并且可以判断了。
大致这几点需要注意,书里还有很多关于Crash的分析,这里不再介绍,后面书中封装了网络请求,但是我觉得不如直接用现有的框架比较好,除此之外,我分享下我写整体框架的时候的一些经验。
1.使用butterknife框架来简化书写
使用注释型的butterknife来编写省去了书写findViewById的麻烦,但是有些地方还是免不去写一些findId,不过使用后确实省了不少事情。
2.封装项目中经常使用的方法
随着项目不断的开发,一些经常在项目中的方法,可以封装成一个工具类库,来简化每次都要写同样代码的蛋疼,同时,在学习封装方法的时候,你会接触到很多的新东西。
3.老生常谈的命名规范
我主张的还是最好用英文,全部用英文,否则就全部都用拼音,不过很多情况下,很多人喜欢使用拼音+英文这种,但是我觉得这种写法有点酸爽。。,为了标准我觉得还是全部英文比较好,其次一些注意事项做了很多年开发的大牛我就不说了,这里有一个链接,如果不明白的话可以看一看。
/article/1970422.html
除此之外,可能有些功能有些Activity是同一个xml中的,比如侧滑菜单中的组件,组件中可能会有一些选项跳到其他页面中,像这种同一个组建下的跳转的目标Activity或是Fragment,我认为为了比较好找,最好在前面加上一些前缀,例如在侧栏里的SettingsActivity可以写成SlidingMenu_SettingsActivity虽然可能命名长了一点,但是Activity一多的话,很快就能找到了,不用再想哪个是侧滑菜单里面的。
4.还有一些需要注意的地方
以前有一个小的总结
/article/8665337.html
这篇文章有时间还会再次总结会。
欢迎大家也来交流,一起学习,或是有什么好的点子好的资源,共同分享。
相关文章推荐
- android打包上传市场参考
- Android开发之实现GridView支付宝九宫格
- iOS使用Xcode7上传代码到git.oschina.net
- Android学习之路(一)——Intent的显式和隐式用法
- AndroidStudio SDK版本下载
- Android Wi-Fi Display(Miracast)介绍
- Android的基本控件,及其继承关系
- iOS 保持界面流畅的技巧
- Android编程之单元测试实例分析
- 安卓app控制继电器和扫描盒子的简单例程
- iOS开发——计算时间差,计算日期差,计算年龄。
- 第五章Object-C类
- #在蓝懿学习iOS的日子#第七个练习日
- Windows环境下Android NDK环境搭建
- Android之Activity的三种状态陈述
- Android统计应用内方法数目
- Android学习笔记之应用单元测试实例分析
- android——material design实现Tab标签
- Android学习-----Android组件通信PendingIntent
- cocospush android