1

我创建了一个广泛需要用户输入和交互的应用程序,即使我已经确保我测试并捕获了所有可能引发错误的情况,我希望能够创建一种机制来跟踪错误,以防我的应用程序崩溃在球场上。

我希望能够从按钮单击记录整个流程,直到用户可能选择的任何内容或日志文件中页面之间的导航,这样以防我的应用程序崩溃,我可以稍后研究跟踪文件和确切地知道错误发生的位置。

我对这种编程很陌生,因此上面的任何指针都会非常有帮助!先感谢您 :]

PS:我什至不确定我所指的内容是否正确称为“日志跟踪”,因此欢迎进行任何编辑。:)

编辑:我还希望能够保存生成的错误报告并将其发送到特定的 ID(类似于“向 xyz 发送错误报告”)。

更新 :

 public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);


    try {
        File myFiles = new File("/sdcard/ScanApp");

        if(!myFiles.exists())
        {
            myFiles.mkdirs();
        }

        File myFile = new File("sdcard/ScanApp/log.txt");
        myFile.createNewFile();

        myFile.delete();

        myFile.createNewFile();

        String cmd = "logcat -d -v time -f "+myFile.getAbsolutePath()+ " -s ActivityManager:V";
        Runtime.getRuntime().exec(cmd);
        Logs.this.finish();
    } 
    catch (Exception e)
    {
        flag=1;
        error=e.getMessage();
    }

我在以前的应用程序中使用它来记录任何应用程序活动并制作一个文本文件并将其保存到 SD 卡中,但内容并不是我想要的。解决方案是我在寻找这些方面的东西吗?

4

2 回答 2

0

在这里,检查链接以供参考

在这里你创建一个类说ExceptionHandlerimplements java.lang.Thread.UncaughtExceptionHandler..

在本课程中,您将做一些拯救生命的事情,例如创建堆栈跟踪和准备上传错误报告等......

现在是重要的部分,即如何捕获该异常。虽然很简单。在覆盖方法中调用 super 方法之后,在每个 Activity 中复制以下代码行onCreate

Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(this));

您的 Activity 可能看起来像这样……</p>

public class ForceClose extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(this));

        setContentView(R.layout.main);
    }
}

希望这可以帮助...

于 2013-06-04T07:09:02.653 回答
0

您需要查看Exception Handling。也就是说,当您的应用程序崩溃或发生任何其他应用程序级错误时,异常块中的代码将执行。因此,在那个地方,将该错误记录在一个文本文件中,从而解决您的“日志跟踪”问题。

请参阅链接以获取精美的示例。

于 2013-05-27T06:17:35.370 回答