我希望我的活动显示屏幕3秒钟,然后返回上一屏幕。但是当我使用
时protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome_layout);
TextView tvResult = (TextView)findViewById(R.id.textView1)
Thread.sleep(3000);
Intent i = new Intent(this,myActivity.class);
startActivity(i);
但不幸的是,这不起作用。这个doesent显示活动等待3秒并返回。但是,我希望它在返回之前显示其内容。我该怎么办?
答案 0 :(得分:6)
您应该删除阻止ui线程的Thread.sleep(3000);
。你永远不应该阻止ui thred。您可以使用Handler post延迟延迟,然后startActivtiy。
Handler handler = new Handler();
handler.postDelayed(new Runnable(){
@Override
public void run(){
// do something
}
}, 3000);
要返回上一个活动,您可以拨打finish()
。
此外,如果您需要返回上一个活动3秒,为什么还需要
Intent i = new Intent(this,myActivity.class);
startActivity(i);
致电finish()
将完成工作
答案 1 :(得分:0)
这不是推荐的方法。 使用Thread.sleep你基本上强制活动等待3000秒才能继续前进。因此,活动中的任何内容都将有效,直到3秒钟过去。
你可以这样做: 编辑:现在效果很好。
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome_layout);
TextView tvResult = (TextView)findViewById(R.id.textView1)
new Thread(new Runnable()
{
@Override
public void run()
{
try
{
Thread.sleep(3000);
Intent i = new Intent(getApplicationContext(), myActivity.class);
startActivity(i);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}