这几天升级我的MyRSS到2.0,遇到一个问题:如何在任意一个Activity中直接退出程序呢?
网上搜到的几种方法都不能解决问题,最后用下面这种方法算是比较满意解决了:
步骤:
1、在程序的第一个Activity中加入下列代码:
@Override
protected void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
super.onNewIntent(intent);
if ((Intent.FLAG_ACTIVITY_CLEAR_TOP & intent.getFlags()) != 0) {
finish();
}
}
2、在AndroidManifest.xml中伟第一个Activity添加以下设置:
android:launchMode="singleTop"
如:
<activity android:name=".RSSMainActivity"
android:label="@string/app_name"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
3、在其他Activity中响应退出事件的代码加入以下代码:
Intent intent = new Intent();
intent.setClass(this, RSSMainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
上面的代码根据你实际的Activity进行修改!
总结:其实就是利用activity的堆栈,跳到第一activity再退出程序~~简单明了!
------------------------------------------------------------------------------------------------------------2011年9月25日 23:10:03修改:
上面所描述的方法其实是存在问题的,经过测试,onNewIntent有时候并不会被掉用到,有关onNewIntent可以参考另一篇文章:
http://blog.csdn.net/linshutao/article/details/6820759,
总之,为了保险,需要在onCreate里也做相应的处理!
if ((Intent.FLAG_ACTIVITY_CLEAR_TOP & intent.getFlags()) != 0) {
finish();
}