java - 按后退键3秒

标签 java android

我尝试编写一个应用程序,其中第一个用户看到启动屏幕,3 秒后他会移动到主屏幕。如果用户在这 3 秒内按下后退按钮,他将停留在闪屏上

我尝试了几种延迟方法(例如停止线程或一些愚蠢的 for 循环),但我无法完成我的任务(3 秒后更改屏幕,如果按下后退则不会)

import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;

import java.util.concurrent.TimeUnit;


public class MainActivity extends AppCompatActivity {

    boolean checkerbool=true;// check if its in the 3s loop
    boolean background=true;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splashscreen);
         Handler handler=new Handler();
        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                checkerbool=false;
            }
            }, 3000);
      if(background) setContentView(R.layout.activity_main);

    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if(checkerbool) background=false;

            return true;
        }


        return super.onKeyDown(keyCode, event);
    }
}

但是启动应用程序后它会直接跳到主屏幕 工作项目将是当用户在 3 秒后移动到不同屏幕时,如果用户按下按钮,他将停留在启动屏幕

最佳答案

重写onBackPressed方法:

@Override
public void onBackPressed() {
    checkerbool = true;
}

更改:

boolean checkerbool=false;

最后:

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        if(!checkerbool)
            setContentView(R.layout.activity_main);
    }
 }, 3000);

您需要将 setContent 移动到 run 方法,因为 postDelayed 不会阻塞主线程,它只是发布执行里面的内容在您提到的时间(3000)之后运行

关于java - 按后退键3秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53943956/

相关文章:

java - 在 HttpServer 处理程序中使用 if 语句

java - JAVA给变量赋值后仍然为空

android - React Native 中的数据更改后组件未更新

android - 在继续下一页之前强制用户登录

java - 如何在android的Recyclerview中添加点赞按钮

java - 如何从处理程序中删除未分配给变量的 Runnable

java - EntityManagerFactory 已关闭

java - 如何覆盖android中的操作栏后退按钮?

android - OpenGL (ES) Android -- 为什么这个 glcolorpointer 只显示黑色?

android - Base.Widget.AppCompat.Button 与 Widget.AppCompat.Button