Andriod:安卓线程实现页面的自动跳转

复制一个工程,

比如说现在我们的Mainactivity.java要自动跳转到下一个页面怎么办?

 如果把

//intert去设置要跳转的页面
        Intent intent = new Intent(this, SecondActivity.class);
            //跳转
        startActivity(intent);

扔到上面去,你会发现

 这个程序一运行我们根本就看不到第一个页面

 你想要它自动跳转,它的逻辑是很简单的,加上一个sleep就好了

那么sleep在安卓中是在哪里呢?

他是这个线程这个类,里面的静态方法    Thread.sleep()    

里面是个毫秒,我们来个3秒        Thread.sleep(3000);

这面的波浪线是什么?因为他可能产生一个受查异常 ,也就是说线程创建可能会崩溃

错误提示:        Unhandled exception type InterruptedException

 所以要加一个try  catch

 运行一下

什么都看不到,

 三秒之后

 

它确实自动跳转了,但此之前我们并没有看见页面一的数据

原因是啥?

实际上安卓在启动app的时候有一个主要的UI线程 

而我们这个sleep是在当前线程做出来阻塞的

那UI显示什么意思呢?他会不断刷新屏幕界面

你在人家不断刷新屏幕界面的时候,你做了睡眠一定会出问题的

UI线程一但sleep的话,就会造成我们刚才的效果,你是无法看到第一个页面的任何字符,因为UI界面被你弄睡眠了

既然要用到这种效果必须     sleep    但又不能在   UI  下面   sleep,你要在新线程里面sleep

新线程里面去sleep.另外启动一个线程,在3秒后启动一个新界面。不要在UI线程中sleep
        那么如何在安卓(Java)中创建线程呢?

    Thread t = new Thread();

这个线程有了,但是我还没有启动

Thread t = new Thread();//实例化了一个线程

如何用呢?

    t.start();//启动线程

那么线程启动以后,你想让他干啥


        

     pthread_create();        启动一个C语言的线程

里面会有一些传参

pthread_create(*t1,NULL,(void*)fuc,NULL);

线程的ID号,        参数,        会涉及到回调函数

也就是c语言创建线程会去执行        fuc    这个函数

那Java创建线程,我们并没有看见所谓的函数

只是                

                        Thread t = new Thread();//实例化了一个线程

                            t.start();//启动线程

那你启动线程,你要他干啥?        不知道

所以说实例化线程,           Thread t = new Thread();        这面需要一个接口

   

        Thread t = new Thread(new Runnable() {
            
            @Override
            public void run() {
                // TODO Auto-generated method stub
                
            }
        });

   

在这个run 里面添加你的活

try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

在这个新线程里面延迟三秒

   

   
                    //intert去设置要跳转的页面
                Intent intent = new Intent(this, SecondActivity.class);
                    //跳转
                startActivity(intent);

    
     三秒之后再去实现自动的跳转

  

 this在当前的线程        Thread是不被识别的        this       改成    MainActivity.this

Intent intent = new Intent(MainActivity.this, SecondActivity.class);

思路:

先创建一个线程        Thread t = new Thread

然后线程启动                t.start();

那线程启动干呢? 你要在线程的构造方法里面   去给他一件事情,Runnable()是一个接口

你要去重写里面的     run   方法,run方法里面做的就是你真正要干的活

(不要在UI线程中sleep,UI被sleep暂停刷新了)

    

    

 运行结果

三秒过后 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值