Android 退出多個Activity | 退出程式

yangxi_001發表於2014-04-18

這幾天升級我的MyRSS到2.0,遇到一個問題:如何在任意一個Activity中直接退出程式呢?

網上搜到的幾種方法都不能解決問題,最後用下面這種方法算是比較滿意解決了:

步驟:

1、在程式的第一個Activity中加入下列程式碼:

[java] view plaincopy
  1. @Override  
  2. protected void onNewIntent(Intent intent) {  
  3.     // TODO Auto-generated method stub  
  4.     super.onNewIntent(intent);  
  5.     if ((Intent.FLAG_ACTIVITY_CLEAR_TOP & intent.getFlags()) != 0) {  
  6.         finish();  
  7.     }  
  8. }  

2、在AndroidManifest.xml中偉第一個Activity新增以下設定:

 android:launchMode="singleTop"

如:

[html] view plaincopy
  1. <activity android:name=".RSSMainActivity"  
  2.                 android:label="@string/app_name"  
  3.                 android:launchMode="singleTop">  
  4.           <intent-filter>  
  5.               <action android:name="android.intent.action.MAIN" />  
  6.               <category android:name="android.intent.category.LAUNCHER" />  
  7.           </intent-filter>  
  8.             
  9.       </activity>  



3、在其他Activity中響應退出事件的程式碼加入以下程式碼:

[java] view plaincopy
  1. Intent intent = new Intent();  
  2.             intent.setClass(this, RSSMainActivity.class);   
  3.             intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);    
  4.             startActivity(intent);  
  5.             finish();  
上面的程式碼根據你實際的Activity進行修改!

總結:其實就是利用activity的堆疊,跳到第一activity再退出程式~~簡單明瞭!

上面所描述的方法其實是存在問題的,經過測試,onNewIntent有時候並不會被掉用到,有關onNewIntent可以參考另一篇文章:

http://blog.csdn.net/linshutao/article/details/6820759,

總之,為了保險,需要在onCreate裡也做相應的處理!

[java] view plaincopy
  1. if ((Intent.FLAG_ACTIVITY_CLEAR_TOP & intent.getFlags()) != 0) {  
  2.             finish();  

相關文章