包结构:
com.XXXX.loading
xxxxLoading.java
com.XXXX.main
xxxxMain.java
handle<更多参考该大牛,冒昧链接,若不愿,望告知!>作用:
比如一个应用程序启动的时候会启动一个主线程,用于对UI事件的响应,而我们如果将读取网络数据或者本地数据也写在主线程,如果5秒没有将数据
读取完成,就会出现界面假死,提示退出程序,这样一来,我们就得把这些耗时的程序写到一个子线程里,因子线程涉及UI更新,所以主线程就不安全了,
这样由于handle是跑在主线程里的,它可以通过POST等方式通过发送消息<Message>与子线程通信,这样可以达到安全的UI更新。
我们没用sleep等方法做延迟就是因为这些方法会阻塞线程,用handle进行此类实践处理是安全的!
public class xxxxLoading extends Activity{
private final int SPLASH_DISPLAY_LENGHT = 2000;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.loading);
//loadingImage=(ImageView) findViewById(R.id.loadingImage);
//loadingImage.setImageResource(R.drawable.background);
//xxxx请自行替换成你自己的activity前缀
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(xxxxLoading.this, xxxxMain.class);
xxxxLoading.this.startActivity(intent);
//overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
xxxxLoading.this.finish();
}
}, SPLASH_DISPLAY_LENGHT);
}
当然两个Acvity都得在AndroidManifest.xml里面注册,另外在AndroidManifest.xml设置全屏图片<无标题栏>如下:
android:theme="@android:style/Theme.NoTitleBar"