包结构:
com.XXXX.loading
xxxxLoading.java
com.XXXX.main
xxxxMain.java
<更多参考该大牛,冒昧链接,若不愿,望告知!>作用:
比如一个应用程序启动的时候会启动一个主线程,用于对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"