android 调试

本文介绍了一个用于Android应用的内存监控和调试工具类。该工具提供了多种方法来帮助开发者了解应用的内存使用情况,包括打印堆总量、剩余量及变化量,并通过一个后台线程定期监控内存变化。

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;
   }
  }
 }
}

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值