我正在开发一个应用程序,每次运行它时,我都会收到这样的消息:
不幸的是,MyApp已停止。
我可以做什么来解决这个问题?
关于这个问题-显然是受什么是堆栈跟踪以及如何使用它调试应用程序错误的启发?,有很多问题表明他们的应用程序已经崩溃,没有任何进一步的细节。这个问题旨在指导Android新手程序员如何自己解决问题,或者提出正确的问题。
我正在开发一个应用程序,每次运行它时,我都会收到这样的消息:
不幸的是,MyApp已停止。
我可以做什么来解决这个问题?
关于这个问题-显然是受什么是堆栈跟踪以及如何使用它调试应用程序错误的启发?,有很多问题表明他们的应用程序已经崩溃,没有任何进一步的细节。这个问题旨在指导Android新手程序员如何自己解决问题,或者提出正确的问题。
当前回答
在下面的showToast()方法中,您必须为上下文或应用程序上下文传递另一个参数,这样您就可以尝试。
public void showToast(String error, Context applicationContext){
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.custom_toast, (ViewGroup)
findViewById(R.id.toast_root));
TextView text = (TextView) findViewById(R.id.toast_error);
text.setText(error);
Toast toast = new Toast(applicationContext);
toast.setGravity(Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(view);
toast.show();
}
其他回答
开发期间崩溃
尝试我最喜欢的工具logview来获取日志并在开发过程中分析它们。确保标记/logview和/lib/logwiew.jar作为可执行文件在Linux中运行。
如果你不喜欢它,Android有很多替代的桌面日志查看器。
在野外撞车
集成实时崩溃报告工具(如Firebase Crashlytics),以获取用户设备上发生的未处理异常的堆栈跟踪。
阅读How to Release a Buggy App(和Live to Tell the Tale),了解更多有关处理现场bug的信息。
Logcat-在Android Studio的开发阶段检查日志
最初清除Logcat并让应用程序再次崩溃,这样您只能获得崩溃的日志详细信息。你必须检查堆栈跟踪
不幸的是,MyApp已停止。这有很多原因。你可以在日志中查看。为此,您可以使用Log.e(“标签”、“消息”);
应用程序崩溃期间的常见错误,如:
编码错误(错误使用关键字)。属性名称不匹配。不支持的插件(可能)。版本不匹配(可能)。AndroidManifest文件中缺少活动。AndroidManifest文件中缺少权限。最常见的NullPointerException。已声明但未定义。
要解决应用程序崩溃错误:
记住以上几点并仔细阅读。出现错误后,您将获得蓝色的文件名(单击它们并跳转到发生错误的代码)。
我会提出类似的建议。
检查你的手机是否有足够的空间让应用程序运行----之前/当应用程序崩溃时检查日志。它将显示应用程序崩溃的确切位置。检查是否在主线程上使用了由于ANR而占用大量内存的内容。
你必须检查堆栈跟踪
如何做到这一点?
在IDE上检查窗口窗体LOGCAT
如果你看不到原木色的窗户,就去这条路打开它
window->show view->others->Android->Logcat
如果您正在使用Google Api,请转到以下路径
adb logcat>logcat.txt
只有当代码中出现致命异常,停止应用程序的执行时,才会显示此弹出窗口。它可以是任何异常NullPointerException、OutOfMemoryException等。
最好的检查方法是通过Logcat,如果您仍在Android studio中开发应用程序,这是快速读取堆栈跟踪并检查应用程序原因的方法。
如果你的应用已经上线,那么你就不能使用logcat。因此,您可以实现Crashlytics,为您提供任何异常的错误报告。