更新:请参阅下面的"已接受"解决方案
当我的应用创建未处理的异常,而不是简单地终止时,我想首先让用户有机会发送日志文件.我意识到在获得随机异常后做更多的工作是有风险的,但是,嘿,最糟糕的是应用程序完成崩溃并且日志文件没有被发送.结果比我想象的更棘手:)
什么有效:(1)捕获未捕获的异常,(2)提取日志信息并写入文件.
什么不起作用:(3)开始发送电子邮件的活动.最终,我还有另一项活动要求用户的许可.如果我让电子邮件活动正常工作,我不会对另一方感到麻烦.
问题的关键是我的Application类中捕获了未处理的异常.由于这不是一个Activity,因此如何使用Intent.ACTION_SEND启动活动并不明显.也就是说,通常在启动一个活动时,调用startActivity并使用onActivityResult恢复.Activity支持这些方法,但Application不支持.
有关如何做到这一点的任何建议?
以下是一些代码剪辑作为入门指南:
public class MyApplication extends Application
{
defaultUncaughtHandler = Thread.getDefaultUncaughtExceptionHandler();
public void onCreate ()
{
Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler()
{
@Override
public void uncaughtException (Thread thread, Throwable e)
{
handleUncaughtException (thread, e);
}
});
}
private void handleUncaughtException (Thread thread, Throwable e)
{
String fullFileName = extractLogToFile(); // code not shown
// The following shows what I'd like, though it won't work like this.
Intent intent = new Intent (Intent.ACTION_SEND);
intent.setType ("plain/text");
intent.putExtra (Intent.EXTRA_EMAIL, new …Run Code Online (Sandbox Code Playgroud) 如果我的应用程序正在运行,我按下主页按钮,应用程序进入后台.现在,如果长按home键并从最近的应用程序列表刷卡它杀死的应用程序,没有人像的事件onPause(),onStop()或者onDestroy()被调用,而该过程被终止.因此,如果我希望我的服务停止,杀死通知和取消注册听众,我该怎么做?我阅读了不少文章和博客,但没有得到任何有用的信息,我没有找到任何有关它的文档.任何帮助,将不胜感激.提前致谢.