您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> 安卓开发 >> 正文

安卓开发之调试实例

作者:佚名    责任编辑:admin    更新时间:2022-06-22

   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;

  }

  }

  }