不用fash做的视频网站,网络设计报告提纲范文,青岛网页设计招聘,在线制作网站源码即使你的应用程序是快速且响应灵敏的#xff0c;但一些设计仍然会给用户造成问题——与其它应用程序或对话框未事先计划的交互#xff0c;意外的数据丢失#xff0c;意料之外的阻塞等 等。避免这些问题#xff0c;有助于理解应用程序运行的上下文和系统的交互过程#xff…即使你的应用程序是快速且响应灵敏的但一些设计仍然会给用户造成问题——与其它应用程序或对话框未事先计划的交互意外的数据丢失意料之外的阻塞等 等。避免这些问题有助于理解应用程序运行的上下文和系统的交互过程而这些又正影响着你的应用程序。简而言之你应该竭尽全力去开发一个与系统和其它应 用程序流畅交互的应用程序。一个常见的流畅问题是一个应用程序的后台处理——例如一个Service或者BroadcastReceiver——弹出一个对话框来响应一些事件。 这可能看起来没啥大碍尤其是你在模拟器上单独地构建和测试你的应用程序的时候。然而当你的应用程序运行在真机上时有可能你的应用程序在没有获得用户 焦点时后台处理显示了一个对话框。因此可能会出现在活跃的应用程序后方显示了你的应用程序的对话框或者从当前应用程序夺取焦点显示了一个对话框而不 管当前用户正在做什么(例如正在打电话)。那种行为对应用程序或用户来说就不应该出现。为了避免这些问题你的应用程序应该使用合适的系统资源来通知用户——Notification类。使用Notification你的应用程序可以在状态栏显示一个icon来通知用户已经发生的事情而不是夺取焦点和打断用户。另一个流畅问题的例子是未能正确实现Activity的onPause()和其它生命周期方法而造成意外丢失了状态或用户数据。又或者如果你的应用程序 想暴露数据给其它应用程序使用你应该通过ContentProvider来暴露而不是(举例)通过一个可读的原始文件或数据库来实现。这些例子的共同点是它们都应该与系统和其它应用程序协作好。Android系统设计时就把应用程序看作是一堆松散耦合的组件而不是一堆黑盒代码。作为开发者来说允许我们把整个系统看作是更大的组件集合。这有益于我们可以与其它应用程序进行清晰无缝的集成因此作为回报我们应该更好的设计我们的代码。这篇文章将讨论常见的流畅问题以及如何避免它们。它将囊括这些主题1) 别丢弃数据2) 不要暴露原始数据3) 不要打断用户4) 有太多事情要做在线程里做5) 不要让一个Activity超负荷6) 扩展系统主题7) 设计你的UI可以应付多屏幕分辨率8) 假设网络很慢9) 不要假定触摸屏或键盘10) 节省设备电池1)别丢弃数据一定要记住Android是一个移动平台。可以显而易见地说其它Activity(例如“Incoming Phone Call”应用程序)可能会在任何时候弹出来遮盖你的Activity记住这个事实很重要。因为这个过程将触发 onSaveInstanceState()和onPause()方法并可能导致你的应用程序被杀死。如果用户在你的应用程序中正在编辑数据时其它Activity出现了这时你的应用程序被杀死时可能丢失那些数据。当然了除非你事先保存了正在进行 的工作。“Android方式”是这样做的能接收和编辑用户输入的Android应用程序应该重写onSaveInstanceState()方法并 以恰当的方式保存它们的状态。当用户重新访问应用程序时她能得到她的数据。进行这种处理方式最经典的例子是mail应用程序。如果用户正在输入email这时其它Activity启动了mail应用程序应该把正在编辑的email以草稿的方式保存起来。2)不要暴露原始数据如果你不想穿着内衣在大街上溜达的话你的数据也不应该这样。尽管可能存在暴露应用程序的某种形式给其它应用程序但这通常不是***的主意。暴露原始数据要求其它应用程序能够理解你的数据的格式如果你变更了格式那么你将破坏那些没有进行同步更新的应用程序。“Android方式”是创建一个ContentProvider以一种清晰的、深思熟虑的和可维护的API方式暴露你的数据给其它应用程序。使用 ContentProvider就好像是插入Java接口来分离和组装两片高耦合的代码。这意味着你可以修改数据的内部格式而不用修改由 ContentProvider暴露的接口这样也不会影响其它应用程序。3)不要打断用户如果用户正在运行一个应用程序(例如Phone程序)断定对用户操作的目的才是安全的。这也就是为什么必须避免创建Activity而是直接在当前的Activity中响应用户的输入。那就是说不要在BroadcastReceiver或在后台运行的Service中调用callActivity()。这么做会中断当前运行的应 用程序并导致用户恼怒。也许更糟糕的是你的Activity可能成为“按键强盗”窃取了用户要提供给前一个Activity的输入。视乎你的应用程 序所做的事情这可能是个坏消息。不选择在后台直接创建Activity UI取而代之的是应该使用NotificationManager来设置Notification。它们会出现在状态栏并且用户可以在他空闲的时候点击它们来查看你的应用程序向他显示了什么。(注意如果你的Activity已经在前台了以上将不适用这时对于用户的输入用户期望的是看到下一个Activity来响应。)4)有太多事情要做在线程里做如果你的应用程序需要执行一些昂贵或耗时的计算的话你应该尽可能地将它挪到线程里。这将阻止向用户显示可怕的“Application Not Responding”对话框如果不这样做最终的结果会导致你的应用程序完全终止。一般情况下Activity中的所有代码包括它的View都运行在相同的线程里。在这个线程里还需要处理UI事件。例如当用户按下一个按键一 个key-down事件就会添加到Activity的主线程队列里。事件处理系统需要很快让这个事件出列并得到处理如果没有系统数秒后会认为应用程序 已经挂起并为用户提供杀死应用程序的机会。如果有耗时的代码内联在Activity上运行也就是运行在事件处理线程里这在很大程度上阻塞了事件处理。这会延迟输入处理并导致ANR对话框。为了避免这个把你的计算移到线程里。在响应灵敏性设计的文章里已经讨论了如何做。5)不要让一个Activity超负荷任何值得使用的应用程序都可能有几个不同的屏幕。当设计UI屏幕时请一定要使用多个Activity对象实例。依赖于你的开发背景你可能理解Activity类似于Java Applet它是你应用程序的入口点。然而那并不精确Applet子类是一个Java Applet的单一入口点而一个Activity应该看作是你的应用程序多个潜在入口点之一。你的“main”Activity和其它之间的唯一不同点 是“main”Activity正巧是在AndroidManifest.xml文件中唯一对“android.intent.action.MAIN” 动作感兴趣的Activity。因此当设计你的应用程序的时候把你的应用程序看作是Activity对象的集合。从长远来看这会使得你的代码更加方便维护。6)扩展系统主题当谈到UI观感时巧妙地交融非常重要。用户在使用与自己期望相反的UI的应用程序时会产生不愉快的感觉。当设计你的UI时你应该尽量避免太多自己的 主题。相反的使用同一个主题。你可以重写或扩展你需要的主题部分但至少在与其它应用程序相同的UI基础上开始。详细请参照“应用风格和主题”7)设计你的UI可以应对多屏幕分辨率不同的Android设备可能支持不同的屏幕分辨率。甚至一些可以自己变更分辨率例如切换到风景模式。确保你的布局和图片能足够灵活地在不同的设备屏幕上正常显示。幸运的是这很容易做到。简而言之你需要做的是为主要分辨率提供不同版本的作品然后为不同的尺寸设计你的布局。(例如避免使用硬编码位置而使用相对布局。)如果那样做的话系统会处理剩下的部分而且你的应用程序在任何设备上都看起来很棒。8)假设网络很慢Android设备会有多种网络连接选项。所有的都提供数据访问但之间肯定有更快的。其中速度最慢的是GPRSGSM网络的非3G数据服务。即使具备3G能力的设备在非3G的网络上也会花费很多的时间所以网络很慢仍然是一个长期存在的事实。这就是为什么你应该按照最小化的网络访问和带宽来编写你的代码。你不能假设网络是快速的所以你应该总是计划它是慢的。如果你的用户碰巧在一个快速的网 络上那很好——他们的用户体验会提升。你要避免相反的情形在不同的地点和不同时间应用程序有时可用有时慢得令人抓狂这样的程序可能不会受欢迎。还有一个潜在的地方是如果你正在使用模拟器那么你很容易受它迷糊因为模拟器使用电脑的网络连接。这比手机网络快很多所以你需要修改模拟器设定来 模拟较低的网络速度。你可以在Eclipse中做到这点在启动选项的模拟器设置页里设置或者在启动模拟器时通过命令行选项设置。9)不要假定触摸屏或键盘Android可以支持多种外观形状。也就是说一些Android设备拥有全“QWERTY”键盘而其它可能会有40键、12键或其它键盘设置。同样的一些设备可能有触摸屏但一些也会没有。当创建你的应用程序的时候记住这一点。不要假定特定的键盘布局——除非你真的想限定你的应用程序只运行在某些设备上。10)节省设备电池如果移动设备经常插在墙上那么它也就不是很“移动”。移动设备是电池供电的如果我们能让每次充电的电池使用得更持久一些那么每个人都会更加开心 ——尤其是用户。其中两大耗电硬件是处理器和无线这也就是我们为什么要写尽可能少做工作、尽可能少去使用网络的应用程序的重要原因。如何让你的应用程序最小化的占用处理器归根结底还是要写高效代码。为了减少无线的电量消耗确保对错误条件进行正确的处理并只获取你要的东西。例如 如果某一个网络操作失败了不要不断地进行重试。如果失败了一次有可能是用户不受欢迎因此如果你再以正确的方式操作有可能还会失败所有你做的都 是在浪费电池。用户是相当聪明的如果你的程序高耗电他们是一定会发现的。到那个时点你唯一可以确定的是你的程序将很快被卸载掉。【编辑推荐】【责任编辑闫佳明 TEL(010)68476606】点赞 0