gpt4 book ai didi

java - 按后退键3秒

转载 作者:行者123 更新时间:2023-12-02 01:44:13 25 4
gpt4 key购买 nike

我尝试编写一个应用程序,其中第一个用户看到启动屏幕,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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com