安卓问题:手机关机时调试



要在电话重新启动时调试BroadcastReceiver,我尝试了一些方法,但不起作用,并链接为以下

如何调试BOOT_COMPLETE广播接收器';s";强制关闭";崩溃?强制关闭碰撞

这可能不是最好的方法,但我也遇到了类似的问题,在启动接收器onReceive方法的开始,我使用了30秒的睡眠功能,所以我有时间转到DDMS透视图中的进程列表,并将我的应用程序置于调试模式,所以onReceive法的第一条实际指令上的断点被击中了。希望这能帮助

与我之前的情况相同,当用户在Android设备中使用广播接收器时,我想知道有关广播接收器、运行服务或应用程序崩溃等的应用程序日志详细信息

[所以使用此代码,您可以获得广播接收器何时启动、停止、崩溃等信息]

我写了我自己的LogCat,它运行得很好,下面的代码可能会帮助你

首先,你需要在应用程序的常量文件中放入一些常量

public static final String LOG_DIR="/SeedSpeak/LOG";
public static final String LOG_MODE_EXCEPTION="exception";
public static final String LOG_MODE_INFO="info";

然后你需要在应用程序的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只是一个当前文件(activity/service/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应用程序崩溃报告)库

你可能想看看这个和这个链接

PL如果您在重新分级时遇到任何问题,请允许我发表评论

最新更新