我一直在练习Android应用程序,以熟悉该平台。具体来说,我试图实现的应用程序允许用户选择声音文件(MP3或WAV)在特定日期和时间播放,显示带有进度条的对话框和确定/取消按钮,允许用户停止播放声音文件。我希望它能像我见过的倒计时应用程序,甚至是内置的闹钟应用程序。当我正在实现这个简单的(我以为!)应用程序时,我试图更好地理解该平台并使应用程序符合Android方式。
在我编写应用程序时,我会更多地了解应该如何在Android平台上运行。而这里我有点困惑。在尝试触发和显示警报的过程中,我了解到正确形成的Android应用程序不应该显示通过Android的警报服务调用后台服务或广播接收器的对话框。相反,我认为,应用程序应该在状态栏上使用通知来提醒用户。然后,用户可以选择查看通知以查看应用尝试告诉他们的内容。
我设法通过从Android的警报服务启动的服务启动新活动来获得我想要显示的对话框。但是,我似乎已经破坏了Android规则。我首先知道这一点,因为我在DDMS LogCat窗口中看到一条消息,询问我是否确定要从服务启动新活动。其次,我在几个地方读到这样做并不好。我想到的一个声明来自一位谷歌开发人员,他说他肯定会卸载一个类似的应用程序。
相反,如果我理解正确,应该使用状态栏和通知来吸引用户的注意力,让他们看看应用程序在闲暇时想要什么。这似乎与我的应用程序尝试的内容相违背。同样,我试图让它表现得很好,就像我见过的倒计时应用程序或Android手机上的内置闹钟应用程序一样。如果我的应用程序运行不正常,闹钟应用程序是否正常运行?显然我会说闹钟应用正在做我期望的事情。我认为,我的应用程序的用户希望声音文件能够播放一个对话框,显示允许播放声音文件而无需通过状态栏。
我是否正确理解了Android平台?关于如何通过提出我提到的对话而不顽皮地实现这样的应用程序的任何意见?我希望这个应用程序被认为是一个结构良好的Android应用程序,但我很难看到我的应用程序与我见过的其他应用程序有什么不同,甚至内置的闹钟应用程序。
谢谢! 杰夫
答案 0 :(得分:4)
用户通常不希望在屏幕上弹出随机内容,特别是在他们正在做某事的时候。毕竟,如果他们正在玩游戏或输入短信或其他内容,弹出的活动将破坏他们正在做的事情。
一些应用程序应该通过设计来实现,无论如何。例如,无论用户在做什么,拨入的电话都应该弹出通话中的屏幕。人们当然可以争辩说,像你这样的警报式应用程序有一些合理的权利来做同样的事情。
然而,有些开发人员认为用户是大量的粪便。这样的开发人员认为他们有权从背景中弹出一些东西而不受惩罚,因为他们有权作为开发人员做他们想做的事,用户被诅咒。我想,记住这些观众,LogCat会发出警告。
如果我正在编写您的应用,我会将其设为用户首选项,无论他们是希望闹钟只是提出Notification
还是实际弹出Activity
。但无论你如何处理这个问题,你的目标应该是做用户期望和欣赏的事情,即使这与开发人员应该做的事情背道而驰。