我有一个问题,我在我的Android应用程序中有一个启动画面我使用线程等待8秒,它在1.6,2.1,2.2,2.3.3,3.0,3.1运行良好,但我想要时返回错误在4.0.3版本的android中运行相同,我不知道为什么?请建议我正确的解决方案.下面我提到了错误堆栈和我的代码.
错误堆栈:
01-05 10:16:06.417: E/AndroidRuntime(589): FATAL EXCEPTION: Thread-75
01-05 10:16:06.417: E/AndroidRuntime(589): java.lang.UnsupportedOperationException
01-05 10:16:06.417: E/AndroidRuntime(589): at java.lang.Thread.stop(Thread.java:1076)
01-05 10:16:06.417: E/AndroidRuntime(589): at java.lang.Thread.stop(Thread.java:1063)
01-05 10:16:06.417: E/AndroidRuntime(589): at com.shipface.common.SplashScreen$1.run(SplashScreen.java:34)
Run Code Online (Sandbox Code Playgroud)
码:
public class SplashScreen extends Activity {
/** Called when the activity is first created. */
Thread splash;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
splash = new Thread(){
@Override
public void run(){
try {
synchronized(this){
// Wait given period of time or exit on touch
wait(4000);
Intent intent = new Intent(SplashScreen.this,HomeActivity.class);
startActivity(intent);
finish();
}
}
catch(InterruptedException ex){
}
finish();
stop();
}
};
splash.start();
}
}
Run Code Online (Sandbox Code Playgroud)
每个人都已经说过异常是从哪里来的(Thread.stop()),所以我就不管它了......
到目前为止,最简单的方法是Thread根本不为此目的创建; 甚至AsyncTask是做得太过分了。这就是Handler创建的目的(或者甚至CountDownTimer,但Handler更干净,IMO)。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Handler handler = new Handler();
Runnable action = new Runnable(){
@Override
public void run(){
Intent intent = new Intent(SplashScreen.this,HomeActivity.class);
startActivity(intent);
finish();
}
};
handler.postDelayed(action, 8000);
}
Run Code Online (Sandbox Code Playgroud)
它们Handler甚至会在主线程上为您运行该操作,无论如何都应该调用该代码。
华泰
| 归档时间: |
|
| 查看次数: |
1787 次 |
| 最近记录: |