?
才开始设置的时候,我会在广告页的Activity中使用子线程的sleep方法,休眠5000毫秒,自动跳转到新页面,然后执行finish();然后在跳过广告的按钮点击事件里,直接添加跳转代码后finish();结果发现,当手动点击跳转到主页面后,子线程的sleep时间一到,还是会重新打开一次主页面。错误代码:public class MainActivity extends AppCompatActivity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=findViewById(R.id.btn);
//控制广告页面3秒自动跳转到主页的子线程
new Thread() {
@Override
public void run() {
super.run();
try {
sleep(3000);//休眠3秒跳转到主页
startActivity(new Intent(MainActivity.this, Main2Activity.class));
finish();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
//点击"跳过广告"按钮跳转到主页面
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, Main2Activity.class));
finish();
}
});
}
}
然后我使用Handler.postDelayed()来控制延迟跳转的时间,手动点击“跳过广告”按钮后,立刻结束Runnable的调用,这样就可以避免,已经跳转到了主页依然会受到延迟时间的的影响,避免了第二次重复打开主页的问题。public class MainActivity extends AppCompatActivity {
private Button btn;
private Handler handler=new Handler();
private Runnable runnable=new Runnable() {
@Override
public void run() {
startActivity(new Intent(MainActivity.this,Main2Activity.class));
finish();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=findViewById(R.id.btn);//"点击跳转"按钮
//3秒后自动跳转到主页面
handler.postDelayed(runnable,3000);
//点击"点击跳转"后进入主页面的点击事件:
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this,Main2Activity.class));
handler.removeCallbacks(runnable);//结束……
finish();
}
});
}
}