在一個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);
