有很多与后台管理有关的问题,但没有人真的满意我。我找到的距离越近that one,但对我来说这看起来像是一个丑陋的解决方法。
点击活动 A 中的按钮时,我将startActivityForResult()
启动活动 B ,期待一个简单的 A < / strong> - &gt; B 后筹码。
但是,如果你足够快地垃圾邮件按钮,你最终会被激活两个意图,因此两个活动堆叠在一起 A - &gt; B - &gt;的乙
我尝试使用FLAG_ACTIVITY_SINGLE_TOP
标记来阻止创建第二个 B 活动,但它没有改变任何内容:
这是活动 A :
中的按钮监听器btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), ActivityB.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivityForResult(intent, REQUEST_CODE);
}
});
并且日志明确指出调用了两次onCreate()
(而不是预期的onNewIntent
):
btn.onClick()
activityB.onCreate()
btn.onClick()
activityB.onCreate()
我的活动必须不为singleTask
或singleInstance
,它们应该作为任何常规活动的后备堆栈的一部分。任何许可都会非常感激!
答案 0 :(得分:-1)
您的问题是按钮点击垃圾邮件启动了两项活动。
以简单的方式设置布尔字段以防止启动两个活动。
示例:强>
boolean isClicked;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!isClicked){
isClicked = true;
//start activity here.
}
}
});
在onPause()
设置布尔字段 false 。