?
才开始设置的时候,我会在广告页的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(); } }); } }
热门评论
看见老师的课程,用Timer跳转页面的方法;
看见老师的课程,用Timer跳转页面的方法;