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暫停刷新了)
? ??
? ??
?運行結果
三秒過后?
總結
以上是生活随笔為你收集整理的Andriod:安卓线程实现页面的自动跳转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ideapad怎么设置u启动 Ideap
- 下一篇: Android:Activity(页面)