我想在用户看到活动后立即创建倒计时。但是,似乎没有适当的回调。 onResume
和onWindowFocusChanged
似乎都不是正确的回调,因为整个代码在用户看到任何内容之前执行。结果我最终得到了“去!”从一开始就在屏幕上。
简而言之: 一旦活动可见,用户是否知道如何在没有任何用户互动的情况下实施倒计时?
编辑:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.util.concurrent.TimeUnit;
import android.widget.TextView;
public class ChallengeModeTutorial extends AppCompatActivity {
private void delayOneSec()
{
try
{
TimeUnit.SECONDS.sleep(2);
}
catch (InterruptedException e)
{
assert true;
}
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_challenge_mode_tutorial);
}
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
super.onWindowFocusChanged(hasFocus);
TextView readySteadyGo = (TextView) findViewById(R.id.challengeModeTutorialReadySteadyGoTextView);
// TextView tutorialText = (TextView) findViewById(R.id.challengeModeTutorialTextTextView);
TextView timeUntilStart = (TextView) findViewById(R.id.challengeModeTutorialReadyTimeTextView);
readySteadyGo.setText("");
timeUntilStart.setText("5");
delayOneSec();
timeUntilStart.setText("4");
delayOneSec();
timeUntilStart.setText("3");
delayOneSec();
readySteadyGo.setText("Ready!");
timeUntilStart.setText("2");
delayOneSec();
readySteadyGo.setText("Steady!");
timeUntilStart.setText("1");
delayOneSec();
readySteadyGo.setText("");
readySteadyGo.setText("Go!");
}
}
答案 0 :(得分:2)
问题是您正在阻止UI线程。当您致电setText(String)
时,它不会立即被吸引。 TextView失效,它将在下一个绘制阶段绘制。但是如果你阻止线程,这将永远不会发生。您必须使用postDelayed()
一秒钟后执行下一个setText(String)
。
答案 1 :(得分:0)
我不确定这是否有效,但您可以尝试在onCreate中使用ViewTreeObserver。绘制布局后会调用它。 (将LinearLayout替换为您的" activity_challenge_mode_tutorial"实际上是什么布局。)
=MATCH(LEFT(C2),{"I","N","E","A","F"},0)
答案 2 :(得分:0)
您可以在onStart方法内部开始倒计时,您需要覆盖该方法。
活动的可见生命周期发生在对onStart()的调用之间,直到对onStop()的相应调用。在此期间,用户可以在屏幕上看到活动,但它可能不在前台并与用户交互。
来自:
https://developer.android.com/reference/android/app/Activity
@Override
protected void onStart() {
super.onStart();
}
答案 3 :(得分:0)
我终于让它像这样工作:
newdata$DatetimeEnd <- as.POSIXct(data_tz$DatetimeEnd, format="%Y-%m-%d %H:%M:%S",tz="UTC +01")