安卓開發(fā)之調(diào)試實例

字號:


    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;
    /**
    * 設(shè)置調(diào)試模式
    *
    * @param bIsDebug
    */
    public static void setMode(boolean bIsDebug)
    {
    m_bIsDebug = bIsDebug;
    }
    /**
    * 是否調(diào)試模式
    * @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);
    }
    }
    /**
    * 強制回收垃圾,可用于檢測析構(gòu)函數(shù),檢測未使用對象是否有
    */
    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(); // 執(zhí)行強制回收以獲得準(zhǔn)確的剩余量
    Runtime r = Runtime.getRuntime();
    AndroidDebug.println("Free memory is :" + r.freeMemory());
    }
    /**
    * 打印堆變化量
    */
    static long longPre = 0;
    public static void printVaryMemory()
    {
    gc(); // 執(zhí)行強制回收以獲得準(zhǔn)確的剩余量
    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;
    }
    }
    /**
    * 監(jiān)控內(nèi)存
    *
    * @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;
    }
    }
    }