onCreate是用来创建一个Activity也就是创建一个窗体,但一个Activty处于任务栈的顶端,若再次调用startActivity去创建它,则不会再次创建。若你想利用已有的Acivity去处理别的Intent时,你就可以利用onNewIntent来处理。在onNewIntent里面就会获得新的Intent.
今天使用 单例模式 来实现应用退出
Intent mIntent = new Intent();
mIntent.setClass(mContext, mainActivity.class);
//这里设置flag还是比较 重要的
mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//发出退出程序指示
mIntent.putExtra("flag", EXIT_APPLICATION);
mContext.startActivity(mIntent);
但是在起始页的
@Override
protected void onNewIntent(Intent intent) {
// 实现主窗单例模式
// 再次启动该activity就不会再调用 oncreate->onstart这些方法了
nt flag = getIntent().getIntExtra("flag", 0)
if (flag == SysUtil.EXIT_APPLICATION) {
finish();
}
super.onNewIntent(intent);
}
怎么也得不到flag 的正确值
原来是 在 onNewIntent 中
Note that getIntent()
still returns the original Intent. You can use setIntent(Intent)
to update it to this new Intent.
int flag = intent.getIntExtra("flag", 0);就OK了
不看函数说明的教训啊