android 多个启动页,Android启动页的问题整理
在一個(gè)
方法一:設(shè)置起動(dòng)模式
一個(gè)Activity有四種啟動(dòng)模式:standard, singleTop, singleTask,
singleInstance。
standard: 標(biāo)準(zhǔn)模式,一調(diào)用startActivity()方法就會(huì)產(chǎn)生一個(gè)新的實(shí)例。
singleTop:
如果已經(jīng)有一個(gè)實(shí)例位于Activity棧的頂部時(shí),就不產(chǎn)生新的實(shí)例,而只是調(diào)用Activity中的newInstance()方法。如果不位于棧頂,會(huì)產(chǎn)生一個(gè)新的實(shí)例。
singleTask: 會(huì)在一個(gè)新的task中產(chǎn)生這個(gè)實(shí)例,以后每次調(diào)用都會(huì)使用這個(gè),不會(huì)去產(chǎn)生新的實(shí)例了。
singleInstance:
這個(gè)跟singleTask基本上是一樣,只有一個(gè)區(qū)別:在這個(gè)模式下的Activity實(shí)例所處的task中,只能有這個(gè)activity實(shí)例,不能有其他的實(shí)例。
這些啟動(dòng)模式可以在功能清單文件中進(jìn)行設(shè)置,中的launchMode屬性。
方法二:在intent中加標(biāo)志
Intent.FLAG_ACTIVITY_REORDER_TO_FRONT這個(gè)標(biāo)志表示:如果這個(gè)activity已經(jīng)啟動(dòng)了,就不產(chǎn)生新的activity,而只是把這個(gè)activity實(shí)例加到棧頂來就可以了。
代碼如下:
Java代碼
Intent intent = new Intent(ReorderFour.this,
ReorderTwo.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
=======================我是華麗的分割線=======================
問題:
操作步驟如下:
1、將啟動(dòng)頁的
2、按home鍵,將
3、再點(diǎn)擊啟動(dòng)頁對應(yīng)的程序圖標(biāo)。
4、程序會(huì)顯示啟動(dòng)頁,而沒有顯示它打開的activity。
安裝
但是,從程序從前臺切到后臺,再切回前臺后,為什么它沒有顯示activity堆棧最頂端的activity呢,而是顯示了root頁面,也就是啟動(dòng)頁呢?
有沒有辦法可以讓launchMode設(shè)置成singleTask后,仍然像設(shè)置成standard一樣,在從后臺切換回程序時(shí),顯示啟動(dòng)頁打開的activity(棧頂?shù)腶ctivity)啊?
回復(fù)1:
“singleTask” activity allows other activities to be part of its
task. It’s always at the root of its task, but other activities
(necessarily “standard” and “singleTop” activities) can be launched
into that task.
這是文檔中的說明,那么既然是只有一個(gè)啟動(dòng)頁,你從程序從前臺切到后臺,再切回前臺后,相當(dāng)于還是要啟動(dòng)程序吧?
既然你要啟動(dòng)程序是不是要啟動(dòng)這個(gè)唯一的啟動(dòng)頁呢?
所以就到了樓主所說的結(jié)果。
第二,其實(shí)感覺也挺簡單的,直接將android:launchMode=”singleInstance”這樣就應(yīng)該可以了。
測試過,能達(dá)到樓主要求。
回復(fù)2:
1、“那么既然是只有一個(gè)啟動(dòng)頁,你從程序從前臺切到后臺,再切回前臺后,相當(dāng)于還是要啟動(dòng)程序吧”。那為什么設(shè)置為“standard”的時(shí)候,能夠顯示棧頂?shù)腶ctivity呢?
設(shè)置為standard的時(shí)候,允許有多個(gè)啟動(dòng)項(xiàng), 也就是說, 可以從任意一個(gè)activity中啟動(dòng),具體的請看文檔。
2、設(shè)置成android:launchMode=”singleInstance”后,這樣操作:由啟動(dòng)頁打開一個(gè)activity,然后按回退鍵。被打開的activity不見了,但是啟動(dòng)頁也不見了,直接顯示手機(jī)的主界面,應(yīng)該顯示啟動(dòng)頁才合理啊。
on the other hand, permits no other activities to be part of its
task. It’s the only activity in the task. If it starts another
activity, that activity is assigned to a different task — as if
FLAG_ACTIVITY_NEW_TASK was in the intent.
文檔中是這樣說的,你設(shè)置成了singleInstance,. It’s the only activity in the
task。
也說了解決的辦法,就是你開啟acitivty跳轉(zhuǎn)的時(shí)候,添加flag FLAG_ACTIVITY_NEW_TASK 即可。
總結(jié)
以上是生活随笔為你收集整理的android 多个启动页,Android启动页的问题整理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: i3wm 获取window class
- 下一篇: Android 动态壁纸