萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 安卓開發 >> 安卓開發之調試實例

安卓開發之調試實例

   package AndroidApi;

  import android.util.Log;

  class Monitoring implements Runnable

  {

  public void run()

  {

  while (!Thread.currentThread().isInterrupted())

  {

  try

  {

  Thread.sleep(100);

  } catch (InterruptedException s)

  {

  Thread.currentThread().interrupt();

  }

  AndroidDebug.printVaryMemory();

  }

  }

  }

  public class AndroidDebug

  {

  private static boolean m_bIsDebug = false;

  /**

  * 設置調試模式

  *

  * @param bIsDebug

  */

  public static void setMode(boolean bIsDebug)

  {

  m_bIsDebug = bIsDebug;

  }

  /**

  * 是否調試模式

  * @return

  */

  public static boolean isDebug()

  {

  return m_bIsDebug;

  }

  /**

  * 打印信息

  *

  * @param strTxt

  */

  public static void println(String strTxt)

  {

  if (m_bIsDebug)

  {

  System.out.println(strTxt);

  }

  }

  /**

  * 打印信息

  *

  * @param strTxt

  */

  public static void Log(String strTag, String strTxt)

  {

  if (m_bIsDebug)

  {

  Log.i(strTag,strTxt);

  }

  }

  /**

  * 強制回收垃圾,可用於檢測析構函數,檢測未使用對象是否有

  */

  public static void gc()

  {

  if (m_bIsDebug)

  {

  System.gc();

  }

  }

  /**

  * 打印堆總量

  */

  public static void printTotalMemory()

  {

  Runtime r = Runtime.getRuntime();

  AndroidDebug.println("Total memory is :" + r.totalMemory());

  }

  /**

  * 打印堆剩余量

  */

  public static void printFreeMemory()

  {

  gc(); // 執行強制回收以獲得准確的剩余量

  Runtime r = Runtime.getRuntime();

  AndroidDebug.println("Free memory is :" + r.freeMemory());

  }

  /**

  * 打印堆變化量

  */

  static long longPre = 0;

  public static void printVaryMemory()

  {

  gc(); // 執行強制回收以獲得准確的剩余量

  Runtime r = Runtime.getRuntime();

  long longNow = r.freeMemory();

  if (longNow > longPre)

  {

  AndroidDebug.println("Free memory -> :" + (longNow - longPre));

  longPre = longNow;

  } else if (longNow < longPre)

  {

  AndroidDebug.println("Free memory <- :" + (longPre - longNow));

  longPre = longNow;

  }

  }

  /**

  * 監控內存

  *

  * @param bIsOpen

  */

  private static Thread m_pThread = null;

  public static void setMonitore(boolean bIsOpen)

  {

  if (bIsOpen)

  {

  if (null == m_pThread)

  m_pThread = new Thread(new Monitoring());

  m_pThread.setDaemon(true);

  m_pThread.start();

  }

  else

  {

  if (null != m_pThread)

  {

  m_pThread.interrupt();

  m_pThread = null;

  }

  }

  }

copyright © 萬盛學電腦網 all rights reserved