要在手机重启时调试 BroadcastReceiver,我尝试了一些方法但不起作用,链接如下
user919127
问问题
562 次
2 回答
2
可能这不是最好的方法,但我遇到了类似的问题,我在启动接收器 onReceive 方法的开头使用了 30 秒的睡眠功能,所以我有时间从 DDMS 角度转到进程列表并放入我的应用程序处于调试模式,因此 onReceive 方法的第一个实际指令上的断点被击中。希望这有帮助
于 2012-12-13T08:20:59.730 回答
0
与我之前的情况相同,我想知道用户在 Android 设备中使用广播接收器、运行服务或应用程序崩溃等的应用程序日志详细信息。
[因此使用此代码,您可以获得广播接收器何时启动、停止、崩溃等信息]
我写了自己的 LogCat,它运行良好,这里的代码可以帮助你
首先你需要在app的常量文件中放一些常量
public static final String LOG_DIR="/SeedSpeak/LOG";
public static final String LOG_MODE_EXCEPTION="exception";
public static final String LOG_MODE_INFO="info";
然后你需要在app的Utill文件中创建三个方法
public static void MyLog(String logMode, String msgKey, Object msgValue) {
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard.getAbsolutePath()+
SeedSpeakConstants.LOG_DIR);
if (!dir.exists()) {
dir.mkdirs();
}
String logFileAbsPath = dir + File.separator + "SeedSpeakLog.txt";
BufferedWriter bufferedWritter = null;
try {
bufferedWritter = new BufferedWriter(
new FileWriter(logFileAbsPath,
true));
String logValue = null;
if (logMode.equalsIgnoreCase(
SeedSpeakConstants.LOG_MODE_EXCEPTION)) {
logValue = logStackTrace((Throwable) msgValue);
} else {
logValue = msgValue.toString();
}
logValue = currentDateTimeValue() + ": " + logMode +
" :" + msgKey + ": "
+ logValue + "\n";
bufferedWritter.write(logValue);
bufferedWritter.newLine();
bufferedWritter.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static String logStackTrace(Throwable t) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw, true);
t.printStackTrace(pw);
pw.flush();
sw.flush();
return sw.toString();
}
public static String currentDateTimeValue() {
SimpleDateFormat formatter =
new SimpleDateFormat("yyyy-mm-dd-HH:mm:ss");
formatter.setLenient(false);
Date curDate = new Date();
String curTime = formatter.format(curDate);
return curTime;
}
现在,如何在您的项目中使用它,非常简单:)
注意:这里的 TAG 只是一个像这样的当前文件(活动/服务/BR)名称
private final static String TAG = "PlantSeedActivity";
(1)。仅打印信息(BR,服务是否已启动.. bla bla)日志使用此
SeedSpeakUtill.MyLog(SeedSpeakConstants.LOG_MODE_INFO,
TAG + ".onCreate", "Service is started now");
(2)。对于打印异常/崩溃详细信息,请使用这种方式
try{
// todo here
}
catch (Exception ex)
{
SeedSpeakUtill.MyLog(SeedSpeakConstants.LOG_MODE_EXCEPTION,
TAG + ".onStartCommand", ex);
}
现在您只需将应用程序放在 Android 设备中,当您想要获取日志详细信息时,请转到 SeedSpeakLog.txt 文件并调试您的应用程序。
或者我听说谷歌提供 ACRA(Android 应用程序崩溃报告)库的另一种方式
如果您在重新评分时遇到任何问题,请让我发表评论!
于 2012-12-13T06:43:10.290 回答