Android:Activity.onPause() 之后的点击事件

标签 android activity-lifecycle

有两个按钮,按钮 A 使用简单的 Activity.startActivity() 方法在其 onClickListener 中启动另一个 Activity ,按钮 B 在其 onClickListener 中执行一些其他工作。

当我单击按钮 B 并在按钮 A 之后立即启动时,新 Activity 启动,旧 Activity 的 onPause() 生命周期事件被触发,第二个按钮的 onClick 事件也被触发,但在 Activity.onPause() 之后导致我的应用程序中存在一些状态不一致。

有什么方法可以防止在不使用 isPaused 标志的情况下在 onPause() 之后传递触摸/点击事件?

**编辑:**我的代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button buttonA = (Button) findViewById(R.id.activity_button);
        buttonA.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, TestActivity.class));
            }
        });

        Button buttonB = (Button) findViewById(R.id.log_button);
        buttonB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.e("TEST", "onClick");
            }
        });
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.e("TEST", "onPause");
    }
}

基本上,如果您足够快并在按钮 A 之后立即单击按钮 B,则 B 的 onClick 在 onPause 之后触发。

最佳答案

在按钮A的OnClickListener中,禁用按钮b。

Button.setEnabled(false);

只需根据您的要求在 A 的 onClickListener 或 onResume 处启用按钮即可。

关于Android:Activity.onPause() 之后的点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38368391/

相关文章:

android - 将 Single's<User> 的 Flowable 转换为 List<User> 的 Flowable

java - 蓝牙连接失败 : read failed, socket might closed or timeout, read ret: -1

android - 如何停止在android中加载webview

android - 在哪里保存应用程序或用户数据? onPause() 或 onStop()

android - ArrayAdapter 没有默认构造函数

java - Parse.com 安卓 : Number of ParseObjects I can pin to the Local Datastore?

Android开发-onclicklistener设置错误图片

android - 当实际调用 onStop 时

java - ANDROID onBackPressed 不适用于该 Activity