Android 只開啟一個Activity實例


在一個Activity中,多次調用startActivity()來啟動另一個Activity,要想只生成一個Activity實例,方法有兩種。 

方法一:設置起動模式 
一個Activity有四種啟動模式:standard, singleTop, singleTask, singleInstance。 
standard: 標准模式,一調用startActivity()方法就會產生一個新的實例。 
singleTop: 如果已經有一個實例位於Activity棧的頂部時,就不產生新的實例,而只是調用Activity中的newInstance()方法。如果不位於棧頂,會產生一個新的實例。 
singleTask: 會在一個新的task中產生這個實例,以后每次調用都會使用這個,不會去產生新的實例了。 
singleInstance: 這個跟singleTask基本上是一樣,只有一個區別:在這個模式下的Activity實例所處的task中,只能有這個activity實例,不能有其他的實例。 

這些啟動模式可以在功能清單文件中進行設置,<activity>中的launchMode屬性。 

方法二:在intent中加標志 
Intent.FLAG_ACTIVITY_REORDER_TO_FRONT這個標志表示:如果這個activity已經啟動了,就不產生新的activity,而只是把這個activity實例加到棧頂來就可以了。 

Intent intent = new Intent(ReorderFour.this, ReorderTwo.class);   
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);   
startActivity(intent);  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM