如何使用布尔值停止线程onClick?

时间:2015-09-25 23:53:11

标签: android splash-screen thread-sleep

我正试图通过单击活动屏幕来找到跳过闪屏的方法。这就是我的意思,它起作用。问题是,在我单击并调用新活动后,如果再次运行布尔值假默认值,则调用两次intent。我做错了什么?

RelativeLayout OnClickSkipScreen = (RelativeLayout)findViewById(R.id.SplashScreenView);
    OnClickSkipScreen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            OnClickSkip = true;
            /*Loading.interrupt();
            Intent SplashScreen = new Intent(SplashScreen.this, HomeScreen.class);
            startActivity(SplashScreen);
            overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
            finish();*/
        }
    });
    Thread Loading = new Thread() {
        @Override
        public void run() {
            if (!OnClickSkip) {
                try {
                    sleep(2573);
                    Intent SplashScreen = new Intent(SplashScreen.this, HomeScreen.class);
                    startActivity(SplashScreen);
                    overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    finish();
                }
            } else if (OnClickSkip) {
                try {
                    Intent SplashScreen = new Intent(SplashScreen.this, HomeScreen.class);
                    startActivity(SplashScreen);
                    overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    finish();
                }
            }
        }
    };
    Loading.start();
}

1 个答案:

答案 0 :(得分:1)

使用SharedPreference。然后想想无论何时你的类加载它都会将你的布尔值加载到它的初始状态false。所以你只会遇到一个条件,这是你现在遇到的条件。

当我说坚持时,我的意思是你需要保存你的boolean状态,以便你可以从存储中加载并检查,这样你的boolean将不依赖于初始状态总是假的

所以在你的oncreate中可能就是这个

 SharedPreference sp = getPreference(0);
 boolean OnClickSkip = sp.getBoolean("onclick",false);

现在你可以继续;如果你想保存你的布尔状态

Editor e = sp.edit();
e.putBoolean("onclick",onClickSkip);
e.commit();

现在继续使用您的代码