|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你可能还需要学习使用Xcode这个开发环境,接著你需要掏钱向苹果注册开发者权限,基本的帐号是99美金。本视频为“斯坦福大学iPhone开发教程”,51CTO将不断关注本视频教程的更新进度,为大家提供最新的视频。1、一些观点
形式的界说:
每一个形式都形貌了一个在我们的情况中不休呈现的成绩,然后形貌了该成绩的办理计划的中心。经由过程这类体例,你能够有数次地利用那些已有的办理计划,无需在反复不异的事情。
甚么是计划形式?
计划形式是在某种出格的情形下,针对某种成绩的某种典范、通用的办理办法。
我们是必要得当懂得并进修一些计划形式,在程序开辟过程当中,老是会触及到一些框架计划,模块计划之类的工具,假如能很好了解并运转计划形式,你所计划的模块或框架将会要不乱很多,由于这些计划形式它们都是通用的办理计划,是经由理论履历了的。
好比说,在程序里,大概会有关照模块,A模块的数据产生变更,B模块必要失掉关照,关于如许的必要,你大概会想到用"播送","动静"大概"回调"的体例来办理,切实其实,方才我所说的那三种也能办理,可是,这三种都是存在一些弱点,好比说播送,用Intent来传输数据很坚苦,关于"动静",没法很好的跟踪,关于"回调",有大概你A与B模块基本不成互相会见。此时,假如你会用察看者形式的成绩,这类成绩能够很轻松办理。
固然,这里是必要详细成绩详细剖析的,我次要的意义就是说,要得当使用形式,我们不克不及为了用形式而往用形式,我们是要用形式来办理我们实践的成绩。
观点完全性
关于观点完全性,在《人月神话》一书在有大批的论述,这里,我把我的了解写出来,与人人分享。
1)观点完全性是体系计划中最主要的思索要素。当你的体系范围越年夜,这一点表现得越分明。
2)为了猎取观点的完全性,计划必需由一团体大概具有共鸣的小型团队来完成。这一点很好了解,关于计划,可让一切的人介入,可是决意权在多数人手里,假如人人都想介入计划,这是基本没有举措保正体系计划是一致完全的。
3)要取得观点上的完全性,就必需有人把持这些观点,相似于贵族的民主统治。这里,关于团队中的项目司理或架构师必需对项目有相对的威望,否则,这个项目内里的就没法一致号召。
4)观点完全性体现有:- -开辟过程当中,需求、计划、编码的分歧性-全部程序具有一致的作风,好比对话框款式,按钮作风,色彩等UI元素-全部程序详细一致的布局,好比分歧模块会见收集,它们的挪用体例分歧,比方异步会见都用回调体例关照了局,不异的功效应当提取成共通模块。-开辟职员能很好的实行需求职员和计划职员的企图。-有完全的文档,需求文档,计划文档,测试文档,处置流程的文档等。
复制代码 怎样坚持观点完全性
- -在轨制上赐与包管,产物的卖力人必需创建手艺上的相对威望-手艺卖力职员(SE,SL)必需严厉实行项目标需求,计划,必需深切到编码细节-在分歧阶段,坚持与一切职员的延续相同,勉励开辟职员提定见。-闪开发职员介入计划,但未定定计划-经由过程延续的反应和相同来完成模块重用
复制代码 2、计划之前应当做甚么
2.1共通类的计划
2.1.1Widget计划
TextView
EditText
Button
Titlebar
Toolbar
...
###为何要供应这些共通控件?###
一致字体巨细,如App字体不随体系字体变更而变更
一致UI式样,如Button,EditText具有不异的背景等
复用代码
2.1.2AdapterItems
依据式样,提取必要在AdapterView中显现的Item
复杂的复合结构
自绘制,从而进步滑动功能
-ListView中放Gallery时,进步高低滑动功能
-只管优化绘制
###数据驱动###
AdapterItems供应中心的办法
-setData(Objectdata)
-getData();
Adapter#getView完成加倍复杂
-完成复杂
-不会由于UI变更而变更
上面代码示例了Adapter#getView()办法的完成,它前往BookView,BookView供应办法来吸收数据,至于BookView的显现,则依据设置的数据来显现,这就是数据驱动UI。- @OverridepublicViewgetView(intposition,ViewconvertView,ViewGroupparent){if(null==convertView){convertView=newBookView(getContext());convertView.setLayoutParameter(newAbsListView.LayoutParameter(150,150));}Bookbook=m_bookList.get(position);BookViewbookView=(BookView)convertView;bookView.setBook(book);returnconvertView;}
复制代码 2.1.3Dialog
扩大于Dialog类
供应Dialog封闭的事务
Dialog的高度随内容的变更而变更
能够设置按钮的笔墨,可见性,字体等办法
设置按钮点击事务的listener
要思索对话框的三个属性:Title,Contentarea,Actionbuttons
2.1.4Utility
-Log
DateFormat
Bitmap
Notification
SharedPreference
Environment
Device
...
2.2Task办理
线程只是一种机制,包管我们要完成的义务不运转在UI线程(也就是说不堵塞UI),完成的义务才是我们存眷的中心,因而,我们能够经由过程计划,把线程封装,让利用者基本感到不到是线程,他只用体贴他要做的事变就好了。
这里,我们能够计划一种"异步链式挪用"的框架,把线程举行了封装。利用都只必要如许用:- newTaskManager().next(task1).next(task2).next(task3)..execute();
复制代码 这里,task1,task2,task3是按次实行的,举个例子:我们要会见收集,获得一个图片,利用这个TaskManager我们必要3个task,
task1:显现一个ProgressDialog。
task2:会见收集,创立bitmap。
task3:封闭对话框,显现bitmap。
这一点,能够参考CoreLib工程中的task.TaskManager类。
关于TaskManager,有以下几点必要注重:
-封装了线程
让挪用者只存眷本人的营业处置
包管按次链式地实行某一个义务
上一个义务的输入,作为下一个义务的输出
能停息、恢复任何一个义务
2.3缓存计划
-把内存占用量年夜的对象寄存在缓存中,如bitmap
使用了LruCache类来完成
使用了AsyncTask类来加载bitmap
不必再手动开释bitmap内存,该操纵有风险
不必再体贴AbsListView的scroll形态
关于缓存的更多具体细节,请参考[请参考CoreLib工程中的cache包]。
如许做,有甚么优点,不必再手动开释bitmap内涵,该操纵有风险,由于该bitmap是不是有View援用,假如当一个View在试图绘制一个已接纳的bitmap,这里会抛出非常。
2.4线程办理
无动静轮回的线程:
- newThread(null,newRunnable(){publicvoidrun(){//Doyouworks.}},"Thread_name_xxx").start();
复制代码 甚么情形下利用这类线程:
-做完一件事变就停止,这件事产生频次不高,好比从SDcard中读取图片数据
不必要复用线程
在利用线程,最好给线程加上名字,如许使用高度与跟踪。
有动静轮回的线程:
如许的线程具有动静轮回,当动静行列中没有动静时,这个线程会被挂起。我们要做一件事变时,只必要给它发送一个动静就好了。
这类情形一般是为了复用线程,不必频仍创立线程,好比音乐播放器程序,专门启动一个有动静轮回的线程来取得音乐的专辑图片。
我们一般还要创立一个与这个线程的动静轮回(Looper)相干联的Handler,由它来处置动静,注重,这做的事变是运转在背景线程的。
3,程序框架怎样计划
Android程序的布局
UI层
数据展现与办理
用户交互
绘制
Adapter
营业逻辑层
耐久化数据(内存中,相称于全局数据)
数据加式(数据层的数占有时分必要举行加工成UI层必要的数据)
数据变更的关照机制
数据层
数据会见(DB,文件,收集等)
缓存(图片,文件等)
设置文件(sharedperference)
上面,我试着画了一个Android程序的布局,假如有欠好的中央,接待斧正。
<br>
4,一些基础准绳
上面列出一些一般的准绳,我们应该在开辟过程当中遵守,接待增补与斧正。
4.1供应initialize()办法
在Activity.onCreate()大概View的机关办法中挪用,在今后看代码时,人们一般起首会往找initialize()如许的办法。
4.2封点缀击事务
把View的点击事务,提成办法,如许在listener处只是一个办法挪用者,一样平常的事务封装为:onXXXClick(Viewv)。
4.3计划一个BaseActivity类
让一切的Activity都承继自BaseActivity类,如许,我们能够做良多有效的事变
-界说共通属性
显现共通对话框(Progressdialog)
获得topactivity
能够手动办理启动的activity
4.4计划Application类
存全局数据,比topactivity,applicationcontext。
多线程问题还有胶水代码的问题建立一个基于CoreData的工程你会看到他自动创建3个类的对象NSManagedObjectModel管理数据的存储结构文件扩展名是xcdatamodeldNSPersistentStoreCoordinator用来管理底层数据的存储用官方的话说CoreDataisnotarelationaldatabaseorarelationaldatabasemanagementsystem(RDBMS) |
|