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);
}