作者博客:http://lytous.ucdchina.com/
8月书友会主要讨论了“信息分类和信息分类的方法”,UCD书友会阵营由从事产品(手机,MP4,GPS等)设计和互联网行业的朋友组成,由于“信息架构”在互联网圈是被讨论得较多的,因此,大部分信息架构的出发点都集中在相关的应用领域。
作为我坚信的“跨媒体设计”的观点来看,信息架构广泛的存在于所有的能产生信息,并且用户对此信息关注的设计领域,互联网范围讨论IA的文章很多了,我就聊聊手机产品的信息架构设计问题,抛砖引玉。
作者博客:http://lytous.ucdchina.com/
8月书友会主要讨论了“信息分类和信息分类的方法”,UCD书友会阵营由从事产品(手机,MP4,GPS等)设计和互联网行业的朋友组成,由于“信息架构”在互联网圈是被讨论得较多的,因此,大部分信息架构的出发点都集中在相关的应用领域。
作为我坚信的“跨媒体设计”的观点来看,信息架构广泛的存在于所有的能产生信息,并且用户对此信息关注的设计领域,互联网范围讨论IA的文章很多了,我就聊聊手机产品的信息架构设计问题,抛砖引玉。
【Android Resource】
智能手机作为新时代的时间“吸血鬼”,时刻利用其“婀娜”的身段吸引我们的注意,而启到关键作用是接下来将要介绍的Notifications。无论这样的比喻是否恰当,首先需要明确一点,Notifications是人机之间非常重要的沟通渠道。例如:实时的提醒主人查看最新的Message、提醒电量不足、提示朋友或者家人的最新来电和股票又上了一个涨停板等。
在什么情况下需要系统以Notifications的方式与用户交互最新信息或者资讯呢?默认情况下手机系统都会在后台(background)运行一系列的Services,每个Service都严格的按照预置的方法监控职责范围内的一切细微变化,并且在第一时间通知用户当前的变化状态。例如:接收到最新的邮件,那么系统会抛出一个Mail Notification提醒用户查看最新邮件,并且显示在Foreground,便于用户第一时间查看邮件信息,但势必会对用户正在操作的进程造成一定影响。
下边引用一个更加具体的实例,Activity Stack如何响应由Notifications引起的不同变化:
1. 用户正在应用Calender创建一条新事件,填写主体时,希望打开之前Mail引用已有的信息资源(此时的Calender还存在于Activity Stack中)。
2. 用户在当前的Calender窗口中返回到Home,通过快捷方式启动Gmail来调取指定的邮件信息。
3. 正当查看邮件信息时,接收到一个有关于即将要开始的会议Notification (From Calender)。
4. 用户选择查看Notification详细情况,其将会立即启动Calender专门显示事件信息的Activity。
5. 通过操作面板中的Back按键结束当前行为,返回到接收Notification之前的状态。
引用以上例子的理由在于这个过程经常发生在人机交互的过程中,当我们早已形成思维定性时,而实际的情况并不是我们熟悉的事物。更具体一点,在某些特别的情况下,当完成查看Notification之后,并不是所有的情况都完全可以通过Back按键返回到启动Notification之前的状态。那么其所包含的必要条件是什么呢?下边给出两个比较具体的设置方法:
专门为响应Notification而设计的Activity: 当用户收到了一个Calender Notification时,选择并启动一个指定的Activity来显示当前最新事件的详细信息和即将发生的事件列表,而不是调用Calender自身的资源。这个指定Activity专门设计用于响应Notification,有人会马上存在疑问:这与普通的Activity存在什么区别呢?如果用一般的Activity(Calender)来响应Notification事件,当触发面板中的Back按键时,将返回到Calender(如果Activity Stack中存在Calender的Instance),而不是返回到响应Notification事件之前的状态。接下来的问题:如何才能实现一个专门用于响应Notification事件的Activity,当结束后可以直接返回触发Notification的Activity呢?原理非常简单,只需要将Activity的Task affinity设置为空,断开与任何Application的关联。针对这样设置的意义,下面做更进一步的讲解。
根据Tasks的工作原理,如果把当前Activity的Task Affinity保持在默认状态下,当初发Back按键将一定会返回到Calender,而不是返回到响应Notification事件之前的状态。因为默认的情况下,Applications中所有的Activities都赋予相同的Task affinity。因此,如果当前Activity Stack中存在与响应Notification事件Activity相同的task affinity,系统将直接将具有相同Task affinity关联的Application切换到Foreground。
保持默认的Task affinity,强制初始化时应用“clear top”flag: 例如,(与之前的引用没有关联)当对Notification做出反应后,Gmail APP再次回到Foreground,而且它总是保持显示当前所有Conversations列表。为了确保按照这个方式来执行,需要让Notification在触发指定的Activity的同时,为intent添加“clear top”flag。这样可以强制APP在运行时总是首先显示Initial Activity,否则APP将会在切换到Foreground依然保持用户最后所看到的状态。(具体实现:将FLAG_ACTIVITY_CLEAR_TOP置于传递给startActivity()的intent中
系统的Notifications完全是启动一个新的Task来对用户的操作作出响应(相当于每次都在startActivity()方法调用的intent中传递FLAG_ACTIVITY_NEW_TASK标签),其目的是防止仅限于响应Notification的Activity属于当前系统中activity stack的一部分。
还有一些其它的方式可以处理类似的应用(只是通知用户对当前事件作出响应为目的),以上是针对系统Notifications提出的一些设计方法。如果不采用系统的默认方式,那么可以另辟蹊径,充分发挥创新思维。但依然需要面对前面所提到的一些状况。
希望大家能提出对讲解存在异议或者补充更多丰富内容,从而帮助我们共同深入的掌握这项技术。