Android中APP闪屏/广告页面的逻辑:postDelayed、removeCallbacks的运用
方法postDelayed的作用是延迟多少毫秒后开始运行,而removeCallbacks方法是删除指定的Runnable对象,使线程对象停止运行。
方法声明如下:
public final boolean postDelayed (Runnable r, long delayMillis) ;
下面是在闪屏页模块用到这两个方法:
public class SplashActivity extends AppCompatActivity {
@Bind(R.id.tvSkip)
TextView tvSkip;
private boolean flag = false;
private Runnable runnable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
ButterKnife.bind(this);
runnable = new Runnable() {
@Override
public void run() {
goHome();
}
};
//延迟两秒之后再执行runnable
tvSkip.postDelayed(runnable, 2000);
tvSkip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
goHome();
}
});
}
/*
* 跳入主页面
*/
private synchronized void goHome() {
if (!flag) {
flag = true;
startActivity(new Intent(SplashActivity.this, MainActivity.class));
finish();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
flag = true;
// 停止线程运行
tvSkip.removeCallbacks(runnable);
ButterKnife.unbind(this);
}
}