Android: “修改”应用启动Activity以及对“启动界面”的看法

源于一个需求:希望从Launcher进入应用的时候,根据不同情况进入不同的Activity。

场景其实有很多,比如根据登录状态进入主界面或者欢迎界面、在应用第一次启动时做一些准备工作等。诚然,对于具有启动界面的App,可以在这个Activity中进行判断并选择稍后需要跳转的Activity,而且这种做法也是可行的。但是,我并不认为启动界面是良好用户体验的一部分,而且并不适用于任何场景。

我认为启动界面适用于“改变环境”的应用,通常是一些生产应用或游戏。

首先,启动界面通常以全屏的方式展现,就像话剧的转场,当应用的环境、操作方式和系统或其他应用有比较大的区别时,启动界面是有必要的,可以帮助用户无意识地进入应用的环境中,比如游戏类应用的启动界面通常是精美的游戏画面。其次,在不做应用初始化或资源加载是,启动界面的停留时间大多在2-3秒,用户对这个时间长度是有感知的,所以对一些用户停留时间本身就不长的应用,如果使用了启动界面,就会给用户操作造成不连贯的感觉,一个反例就是词典里应用,大多数情况用户都是为了查一个或不多的几个单词,点开应用在启动界面等待几秒是不好的体验,容易打断用户操作。

总之,对于一些不适用于启动界面操作的应用,就需要有一个策略在用户进入应用之前改变要启动的Activity,通常,这个Activity是在Manifest中配置的main activity。在启动界面进行跳转是没有问题,只是不加处理的话用户先看到启动界面然后再跳转体验不好。

那么如何在既不让用户看到“启动界面”又能完成跳转策略呢?其实关键在于隐藏入口Activity。在App中使用一个Activity作为入口Activity,这个Activity不可见,同时在这个Activity中完成跳转策略。

隐藏这个Activity的做法是将这个Activity的theme设置为:

android:theme=”@android:style/Theme.NoDisplay”

这样保证Activity不可见,当然跳转策略要尽可能简单,少占用资源,否则会造成卡顿。如果需要网络请求,亲,还是使用启动界面的方式吧~