在安卓系统5秒后执行函数

2022-08-31 22:17:09

我是Android开发的新手,现在我的启动器活动仅显示5秒,之后我想检查用户是否已登录或无法运行并执行操作。

这是我的代码。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    exactPreferences = getSharedPreferences("ExactPreference",MODE_PRIVATE);
    setContentView(R.layout.activity_landing_page);

    session = exactPreferences.getString(Model.getSingleton().SHARED_SESSION_ID,null);
    Log.i("Session Id",session);
        displayData(); // I want to perform this function after 5 seconds.
}


private void displayData() {
    if(session.equals("")){
        Intent loginIntent = new Intent(LandingPage.this,
                LoginActivity.class);
        startActivity(loginIntent);
        Log.i("User Logged In", "False");
    }
    else
    {
        Intent objIntent = new Intent(LandingPage.this,
                IndexPageActivity.class);
        startActivity(objIntent);
        Log.i("User Logged In", "True");
    }

}

答案 1

您可以使用处理程序添加一些延迟。按如下所示调用该方法,以便在 5 秒后执行该方法。displayData()

new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
          displayData();
        }
    }, 5000);

注意:不要像那样使用线程,因为它会阻止你的UI并使其无响应。Thread.sleep(5000);


答案 2

millisDelayTime 变量分配您希望导致延迟的毫秒数。mActivity 是用于提供应用程序上下文的活动对象。在你的例子中,millisDelayTime应该用5000初始化

mActivity.runOnUiThread(new Runnable() {
@Override
    public void run() {
    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
       @Override
       public void run() {
             //your code here
       }
    }, millisDelayTime);
  }
});