public class FPAEstimaterActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);//运行的结果是FPAEstimaterActivity new Thread(){ //的UI出来后程序不往下走了 @Override public void run(){ SystemClock.sleep(5000); } }.start(); Intent i=new Intent(this, SelectTest.class); startActivity(i); } }这样行吗
不是不明显,应该是方式不太规范, SystemClock.sleep(5000);执行完后才去startActivity,所以这样public class FPAEstimaterActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);//运行的结果是FPAEstimaterActivity new Thread(){ //的UI出来后程序不往下走了 @Override public void run(){ SystemClock.sleep(5000); mHandler.sendmesage(0); } }.start();
public class FPAEstimaterActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { new Thread(){ }.sleep(10000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } Intent i=new Intent(this, SelectTest.class); startActivity(i); } } 我又改了下,这会这个延迟的效果灰常到位,但是 setContentView(R.layout.main); 这个效果出不来了,我在.main里设置了一张背景图
import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.SystemClock;public class FPAEstimaterActivity extends Activity { /** Called when the activity is first created. */ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);//运行的结果是FPAEstimaterActivity new Thread(){ //的UI出来后程序不往下走了 @Override public void run(){ SystemClock.sleep(5000); mHandler.sendEmptyMessage(0); } }.start();
肯定不能在主线程中延时,5s就会报ANR了。所以,主页启动后先创建一个handler,然后延时5s后发送一个消息,消息响应后就直接跳转到下一个界面。
public class FPAEstimaterActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);//运行的结果是FPAEstimaterActivity
new Thread(){ //的UI出来后程序不往下走了
@Override
public void run(){
SystemClock.sleep(5000);
}
}.start();
Intent i=new Intent(this, SelectTest.class);
startActivity(i);
}
}这样行吗
FPAEstimaterActivity主界面闪了一下直接到 SelectTest.Avtivity页面了,那个延时的效果不明显啊
SystemClock.sleep(5000);执行完后才去startActivity,所以这样public class FPAEstimaterActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);//运行的结果是FPAEstimaterActivity
new Thread(){ //的UI出来后程序不往下走了
@Override
public void run(){
SystemClock.sleep(5000);
mHandler.sendmesage(0);
}
}.start();
}
Handler mHandler = new Handler(){
void handlemeeage(Message msg){
if(msg.what == 0){
Intent i=new Intent(this, SelectTest.class);
startActivity(i);
}
}
};
}
Intent i=new Intent(this, SelectTest.class)的this改成FPAEstimaterActivity.this就行了
public class FPAEstimaterActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
new Thread(){ }.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} Intent i=new Intent(this, SelectTest.class);
startActivity(i);
}
}
我又改了下,这会这个延迟的效果灰常到位,但是
setContentView(R.layout.main);
这个效果出不来了,我在.main里设置了一张背景图
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;public class FPAEstimaterActivity extends Activity {
/** Called when the activity is first created. */
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);//运行的结果是FPAEstimaterActivity
new Thread(){ //的UI出来后程序不往下走了
@Override
public void run(){
SystemClock.sleep(5000);
mHandler.sendEmptyMessage(0);
}
}.start();
}
Handler mHandler = new Handler(){
public void handleMessage(Message msg){
if(msg.what == 0){
Intent i=new Intent(FPAEstimaterActivity.this, SelectTest.class);
startActivity(i);
}
}
};
}
OK,感谢各位,这个问题解决了,先将主要源码送上