我的应用程序有启动活动
它必须显示至少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);
}
处理程序完成后,检查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);
}
AsyncTask
实例并测量与远程服务器同步的时间。如果时间大于5分钟,请开始新的活动,否则-等待5秒:AsyncTask
,以便等到您的syncFromInternet()
完成后再执行。 syncFromInternet()
中调用处理程序。