?
才开始设置的时候,我会在广告页的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();
}
});
}
}點擊查看更多內容
2人點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦