手机重启时调试BroadcastReceiver 我尝试了一些方法,但不起作用,并按以下方式链接
How to debug BOOT_COMPLETE broadcast receiver's "Force Close" crashes?强制关闭崩溃
答案 0 :(得分:2)
可能这不是最好的方法,但我有一个类似的问题,我在启动接收器onReceive方法的开头使用了30秒的睡眠功能,所以我有时间去DDMS的进程列表透视并将我的应用程序置于调试模式,因此断点在onReceive方法的第一个真实指令上它已经命中。 希望这个帮助
答案 1 :(得分:0)
我之前遇到的情况相同,我想知道有关广播接收器,运行服务或应用程序崩溃等的应用程序日志详细信息,当用户在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";
然后你需要在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文件并调试您的应用程序。
或者我听说Google provice ACRA (Application Crash Report for Android)库
的另一种方式PL让我发表评论,如果您在重新编程时遇到任何问题!!