Android 获取最新意图

Android 获取最新意图,android,android-intent,Android,Android Intent,我正在从我的服务调用活动。每当事件发生时以及每次通过Intent传递可序列化对象时,我都会这样做。这里的问题是,当第二次调用活动时,它具有旧的意图数据,而不是新的意图数据。因此,我确信这是由于我在活动类中犯了一些错误造成的,但我无法理解 public class ReceiveActivity extends Activity { AlertDialog alertDialog; @Override public void onCreate(Bundle savedInstanceState)

我正在从我的
服务
调用
活动
。每当事件发生时以及每次通过Intent传递可序列化对象时,我都会这样做。这里的问题是,当第二次调用活动时,它具有旧的意图数据,而不是新的意图数据。因此,我确信这是由于我在
活动
类中犯了一些错误造成的,但我无法理解

public class ReceiveActivity extends Activity {
AlertDialog alertDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setTitle("Event");
    CustomEvent custom= (CustomEvent) getIntent().getSerializableExtra("custom");
    alertDialog.setMessage(custom.getName());
    alertDialog.setIcon(R.drawable.ic_launcher);
    alertDialog.setButton("Ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) { 
            ReceiveActivity.this.finish();
        }
    });
    alertDialog.show();
}

@Override
protected void onPause() {
    if(alertDialog!=null) {alertDialog.dismiss();}
    super.onPause();

}

@Override
protected void onStop() {
    if(alertDialog!=null) {alertDialog.dismiss();}
    super.onStop();

}
这是我用来从服务中调用活动的代码(通过
通知


我认为您需要重写方法以获得后续提交意图。如果活动的启动模式设置为singleTop,并且该活动在达到第二个目的之前尚未完成,则会发生这种情况。

请尝试使用onResume()方法,因为该活动不会再次创建。它仅切换具有顶级活动的位置


Android仅在需要内存时才完成活动。

Joseph您的活动第二次恢复或新启动?我已经更新了代码,详细说明了如何调用
活动。
。我只是这样做了,但并不总是有效。我没有指定任何启动模式。所以它是
标准的
我将启动模式更改为
singleTop
,在intent中设置了标志,但仍然不起作用。未调用重写的onNewIntent(..)方法。如果直接调用的是
活动,请尝试将启动模式设置为SingleInstance如果它按预期工作。因此,我认为我创建
通知的方式存在一些错误,问题在于,但使用FLAG_UPDATE_CURRENT将导致旧意图的丢失(如果没有按顺序接收和打开通知),我的onNewIntent()从未被调用,你能与我分享一些想法吗?你的类是否扩展了
活动
?活动是否确实正在启动?例如,是否调用了活动的
onCreate()
方法?是否将活动的启动模式设置为“singleTop”-请看,是的,我尝试了singleTop和singleTask,我实际上已经询问了一个关于此问题的问题,但还没有解决,现在还不确定。如果你的问题有悬赏,我希望会有更多的建议。:-)
/**
 * Override super.onNewIntent() so that calls to getIntent() will return the
 * latest intent that was used to start this Activity rather than the first
 * intent.
 */
@Override
public void onNewIntent(Intent intent){
    super.onNewIntent(intent);
    setIntent(intent);
}
/**
 * Override super.onNewIntent() so that calls to getIntent() will return the
 * latest intent that was used to start this Activity rather than the first
 * intent.
 */
@Override
public void onNewIntent(Intent intent){
    super.onNewIntent(intent);
    setIntent(intent);
}