Android客户端多线程实例分析
Java中實現多線程主要有兩種方式:繼承Thread類、實現Runnable接口。
Thread類存放于java.lang類庫中,系統默認加載這個包,所以可以直接使用Thread類。
class myThread extends Thread{屬性方法修飾符 run(){ //激活的線程將從run()方法開始執行要執行的代碼塊}
}new myThread().start(); //在程序中需要執行線程的地方插入此語句,激活線程
在Java中不允許多繼承,一個子類只能有一個父類,但是可以通過實現接口的方式達到多繼承效果。因此,可以實現Runnable接口來創建線程。
class MyThread implements Runnnable(){屬性方法public void run(){要執行的代碼塊}
}MyThread myThread = new MyThread(); //實例化一個MyThread類型對象
new Thread(myThread).start(); //使用Thread類的start方法激活此線程
Runnable接口實現的線程類需要調用Thread類中的start()方法是由于Runnable接口中只有一個run()方法,沒有start()方法。
舉一個多線程的例子
public class ThreadDemo extends Thread {public static void main(String[] args) {// TODO 自動生成的方法存根ThreadDemo t1 = new ThreadDemo();t1.start(); try {Thread.sleep(10);} catch (InterruptedException e1) {// TODO 自動生成的 catch 塊e1.printStackTrace();}for(int i=0;i<3;++i){t1.Msg(); //Msg()中調用了currentThread(),//調用Msg()方法間接調用了currentThread()//要注意的是,調用者是main線程,并非子線程實例t1try{Thread.sleep(1000);}catch(InterruptedException e){e.printStackTrace();}}}public void run(){for(int i = 0; i<3; ++i){Msg();try{Thread.sleep(1000); //休眠線程1s}catch(InterruptedException e){e.printStackTrace();}}}public void Msg(){Thread t = Thread.currentThread(); //currentThread()是靜態方法,//調用時要跟在類名后而非對象名,//該方法返回執行該方法的線程實例 String name = t.getName(); //獲取線程名System.out.println("name = "+name);}
}
運行結果:
在之前《MPD解析模塊在Android中的實現》一文中,對耗時的MPD下載、解析過程創建了子線程,因為子線程不能對UI進行操作,于是調用showResponse(final String response)方法,將子線程的解析結構結果以string對象傳遞給UI線程,之后經過TextView顯示出來。
private void showResponse(final String response) {//子線程中不允許進行UI操作,因此利用showResponse()方法切換到主線程更新runOnUiThread(new Runnable() {@Overridepublic void run() {responseText.setText(response);//創建一個TextView顯示傳入字符串}});}---------------------
原文:https://blog.csdn.net/qq_34041083/article/details/85103846
在Android中Java多線程還有一個常見的用處,設置啟動頁。如果想在已有MainActivity基礎上增加一個圖片主題的啟動頁,可以利用多線程延遲MainActivity的啟動,并在其啟動之前調用布局的圖片。
public class DisplayActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_display);new Thread(new Runnable() {@Overridepublic void run() {try{Thread.sleep(3000); //MainAvtivity的啟動時間延遲3秒}catch(InterruptedException e){e.printStackTrace();}runOnUiThread(new Runnable() {@Overridepublic void run() {//跳轉至 MainActivityIntent intent = new Intent(DisplayActivity.this, MainActivity.class); startActivity(intent);//結束當前的 ActivityDisplayActivity.this.finish();}});}}).start();}
}
即在MainActivity之前增加DisplayActivity,DisplayActivity的layout文件中僅布局一張圖片,這樣即可實現Android App啟動頁(廣告)設置。
總結
以上是生活随笔為你收集整理的Android客户端多线程实例分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 综艺电影与电影的区别
- 下一篇: 求一个潇洒的个性签名