newintent的教训

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了 

不看函数说明的教训啊


你可能感兴趣的:(Android)