让启动活动等待进程

问题描述 投票:1回答:5

我的应用程序有启动活动

它必须显示至少5秒

但是在本活动中,我还有另一个线程可以同步来自互联网的数据

同步过程可能需要5秒钟以上或不到5秒钟。

如果少于5秒,处理程序应等到第五秒

如果超过5秒,处理程序应等待,直到处理完成

如何使处理程序等待另一个线程?

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

    syncFromInternet(); // another thread may over 5 seconds

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent intent;
            intent = new Intent(getApplicationContext(), SecondActivity.class);
            startActivity(intent);
        }
    }, 5000);

}
android multithreading android-handler
5个回答
1
投票
您必须做出简单的逻辑,例如

处理程序完成后,检查syncFromInternet方法是否完成,如果它已完成打开主活动,则>

当syncFromInternet完成时,请检查处理程序是否完成,是否已完成打开主活动。

以上代码说明:

boolean isHandlerCompleted = false, isAsyncCompleted = false; new Handler().postDelayed(new Runnable() { @Override public void run() { isHandlerCompleted = true; if (isHandlerCompleted && isAsyncCompleted) { openMainActivity();// both thread completed } } }, 5000); // in your async task add this condition when it completes its task isAsyncCompleted = true; if (isHandlerCompleted && isAsyncCompleted) { openMainActivity();// both thread completed } // till this line // make this function to open main activity openMainActivity() { Intent intent = new Intent(getApplicationContext(), SecondActivity.class); startActivity(intent); }


1
投票
您可以使用AsyncTask实例并测量与远程服务器同步的时间。如果时间大于5分钟,请开始新的活动,否则-等待5秒:

1
投票
您可以使用此代码:

0
投票
您应该实现AsyncTask,以便等到您的syncFromInternet()完成后再执行。

0
投票
执行线程后,在syncFromInternet()中调用处理程序。
© www.soinside.com 2019 - 2024. All rights reserved.