Android學習筆記

          我的Android之路
          posts - 13, comments - 3, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          2011年3月9日

          我們在Eclipse中經常使用Logcat窗口查看日志信息,不過其實也可以在手機上顯示日志。下面的例子就是在textview中顯示logcat日志。
          java代碼如下:
           1 
           2 package LogcatTextView.com;
           3 
           4 import java.io.BufferedReader;
           5 import java.io.IOException;
           6 import java.io.InputStreamReader;
           7 
           8 import android.app.Activity;
           9 import android.os.Bundle;
          10 import android.widget.ScrollView;
          11 import android.widget.TextView;
          12 
          13 public class LogcatTextView extends Activity {
          14     /** Called when the activity is first created. */
          15     @Override
          16     public void onCreate(Bundle savedInstanceState) {
          17         super.onCreate(savedInstanceState);
          18         setContentView(R.layout.main);
          19 
          20         try {
          21 
          22             Process process = Runtime.getRuntime().exec("logcat -d");
          23 
          24             BufferedReader bufferedReader = new BufferedReader(
          25 
          26             new InputStreamReader(process.getInputStream()));
          27 
          28             StringBuilder log = new StringBuilder();
          29 
          30             String line;
          31 
          32             while ((line = bufferedReader.readLine()) != null) {
          33 
          34                 log.append(line);
          35 
          36             }
          37 
          38             TextView tv = (TextView) findViewById(R.id.tvLogcat);
          39 
          40             tv.setText(log.toString());
          41 
          42             final ScrollView scrollView = (ScrollView) findViewById(R.id.scrlLogcat);
          43 
          44             scrollView.post(new Runnable() {
          45                 @Override
          46                 public void run() {
          47                     scrollView.fullScroll(ScrollView.FOCUS_DOWN);
          48                 }
          49             });
          50 
          51         } catch (IOException e) {
          52 
          53         }
          54     }
          55 }
          不要忘記加上權限
          <uses-permission android:name="android.permission.READ_LOGS" />

          posted @ 2011-03-09 13:44 andteamroid 閱讀(5706) | 評論 (3)編輯 收藏

              當你在后臺使用Thread或者AsyncTask來處理一些耗時的操作時,可能想要對這些線程加以控制,其中包括中斷線程。

              很多情況下,當用戶啟動程序的時候,一個后臺運行的線程會同時啟動去加載內容。但是,當用戶離開程序時,線程應該被打斷,因為現在用戶已經不再關注程序了,同時也不再關注線程處理的結果,而線程是要占用系統的資源的,如果不及時中斷線程,會導致系統資源的浪費。

              可是怎么去中斷一個線程呢?從文檔中可以看到Thread類有stop()方法,這個方法提供一個“簡單”的方法去中斷線程。不過這種野蠻的中斷方式會導致一些問題,而且現在這個方法已經不推薦使用了。

              除此之外,你可以使用Thread.interrupt()或者AsyncTask.cancel()方法,但是這不會馬上中斷線程,因此,只能在自己的線程中實現中斷并退出。

              在許多情況下,后臺運行的線程都有一個主循環,因此你可以在循環中判斷線程是否被中斷,若被中斷,則退出循環,從而結束進程。例如一個線程下載線程,可以通過isInterrupted()方法判斷當前線程是否被中斷。

          thread = new Thread() {
            
          public void run() {
              
              
          while(!isInterrupted() && hasMoreDataToDownload()){
                downloadAndWriteSomeMore();
              }
              
          if(isInterrupted()){
                deleteThePartiallyDownloadedFile();
              }
          else{
                callBack();
              }
            }
          }
          thread.start();
          thread.interrupt();

           

              如果線程被中斷,則調用deleteThePartiallyDownloadedFile()函數,刪除沒有完成下載的文件。當線程沒有被中斷,則調用callBack()函數,可以使用handler發送下載完成的信息。

              如果你的線程中沒有這樣一個主循環,例如只是執行一個很耗時的SQL查詢操作,可以在查詢操作之后調用 isInterrupted()來判斷是否需要結束線程。

              文章翻譯自:http://www.helloandroid.com/tutorials/interruptingcancelling-threads

          posted @ 2011-03-09 12:53 andteamroid 閱讀(5377) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 南康市| 阿巴嘎旗| 沙湾县| 绥阳县| 庆云县| 东山县| 镇安县| 新化县| 申扎县| 临江市| 甘孜县| 普格县| 宝鸡市| 铜川市| 克拉玛依市| 安陆市| 淳化县| 铜梁县| 东莞市| 西林县| 南川市| 张家港市| 客服| 兴安盟| 长治市| 皋兰县| 仙居县| 诸暨市| 泸定县| 文水县| 米易县| 宁安市| 瓮安县| 临猗县| 双桥区| 兴义市| 布尔津县| 余干县| 大邑县| 忻城县| 南和县|