- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Thread.setDefaultExceptionHandler() 尝试启动新 Activity ,有效地重启应用程序。但是,似乎 ActivityManager 正在启动新的应用程序进程。
我已经尝试了很多实验。最成功的是这段代码,在异常处理程序中:
public void handleUncaughtException (Thread thread, Throwable e)
{
Intent intent = new Intent (getBaseContext (), RestartActivity.class);
intent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_CLEAR_TASK |
Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pending =
PendingIntent.getActivity (getBaseContext (), 0, intent, PendingIntent.FLAG_ONE_SHOT);
try {
pending.send ();
}
catch (PendingIntent.CanceledException e1) {
logE ("send pending intent:" + e1); // logE is a wrapper for Log.e().
}
System.exit (1);
}
在这种情况下,RestartActivity 启动并显示,但只有一秒钟。然后该应用程序完全消失,Android 显示之前的应用程序。
日志文件包含这个(注意 pids 略有不同):
05-29 22:46:28.429 1465-3665/? I/ActivityManager: Force stopping com.perinote.crashtest appid=10170 user=0: from pid 14484
05-29 22:46:28.429 1465-3665/? I/ActivityManager: Killing 14486:com.perinote.crashtest/u0a170 (adj 0): stop com.perinote.crashtest
我也试过在这个变体中使用 AlarmManager:
public void handleUncaughtException (Thread thread, Throwable e)
{
Intent intent = new Intent (getBaseContext (), RestartActivity.class);
intent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_CLEAR_TASK |
Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pending =
PendingIntent.getActivity (getBaseContext (), 0, intent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarm = (AlarmManager)getSystemService (Context.ALARM_SERVICE);
alarm.set (AlarmManager.RTC, System.currentTimeMillis () + 3000, pending);
System.exit (1);
}
在这种情况下,RestartActivity 根本不显示,我在 logcat 中看到这样一行:
05-29 22:06:46.841 1465-11842/? I/ActivityManager: Force stopping com.perinote.crashtest appid=10170 user=0: from pid 12551
是什么导致 Android 非常想杀死刚刚启动的进程?
最佳答案
由于我误会了您的 Intent ,因此进行了大量编辑。
第一个版本不起作用,因为您正在向您自己的应用程序发送待定 Intent 。仅仅因为它是一个未决的 Intent 并不意味着它将在一个新进程中运行,这意味着无论其他应用程序调用它(例如通知启动器)它都会被激活,就像您自己的进程启动了 Intent 一样。例如,它可以访问私有(private) Activity 。它实际上是在您被杀死之前在您的进程中启动的,然后与您一起被杀死。
警报管理器根本不起作用,因为其中的未决 Intent 必须是针对 BroadcastReceiver - 它不接受服务或 Activity 。如果您在 list 中放置一个接收器并对其使用待处理的 Intent ,您可能可以让它工作。
关于android - 在 Android uncaughtException 之后,ActivityManager 会强制停止新进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44254411/
我正在尝试将 Matt Gallagher 的全局异常处理程序添加到我的一个项目中。运行位于 : 的示例项目 http://cocoawithlove.com/2010/05/handling-unh
我正在学习错误/异常处理,但我不明白如何使用 process.on('uncaughtException', ...)。你能像 try 和 catch 一样使用它吗,还是它只处理异常? 最佳答案 如
升级到 Protractor 4.0.0 并根据重大更改调整配置后,我们终于启动了测试。 现在,问题是在测试运行后它失败了: [09:52:22] E/launcher - "process.on('
我发现了这个 Android: How to auto-restart application after it's been "force closed"? 但我不知道警报管理器应该放在哪里以及如何
好吧,这有点令人困惑,所以请留在此处 我有一个工作线程,它是 Node.js child_process,以 fork() 启动 工作进程从父进程接收消息,执行一些工作,然后在完成后发回消息。我的目标
我正在使用Selenium进行iOS移动应用测试。我正在使用各自 Appium version 1.3.7 Node JS version 2.7.5 ios webkit debug proxy i
请耐心等待,因为我是 Objective-C 语言的新手。我正在尝试初始化 initWithName() 方法,但它不起作用。我不确定为什么当我在这里查看其他答案时,它指出 .m 和 .h 文件必须在
当出现未捕获的异常时,我想从我的 UncaughtExceptionHandler 开始一个新 Activity 。这可能吗? 我认为当前 Activity 无法在其“错误”状态下启动新的子 Acti
我使用 process.on "uncaughtException"。有时我会多次调用它,因为它不是微不足道的模块系统。所以我得到警告: (node) warning: possible EventE
使用时,我有一个 nodeJS 项目在我的本地运行良好 process.on('uncaughtException', function (err) { console.log('********
我在 ES6 模块中有一个奇怪的行为: index.mjs: process.on('uncaughtException', err => { console.log('Oh no!'); p
我很好奇,因为 process.exit(1) 是否在异步回调中操作,appendFile,如果原来的错误发生的地方将继续运行并处于不稳定状态。我尝试将 process.exit(1) 与 fs 内联
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Using global exception handling with “setUncaughtExcep
将已检查的异常直接丢弃到 UncaughtExceptionHandler 的负面后果是什么? Thread t = new Thread() { @Overr
结合a previous question我的,我想知道当异常被 Thread.UncaughtExceptionListener 捕获时,上下文到底发生了什么。当监听器接收到未捕获的异常时,上下文似
我正在尝试获取回溯符号,如下所示的 Xcode 列表 *** First throw call stack: ( 0 CoreFoundation
如果错误,我想在请求中 res.end('server error') 。我的代码: http.createServer(function(req,res){ process.on('uncaug
如果你在 node.js 中捕获了 uncaughtExceptions,像这样: process.on('uncaughtException', function (error) { conso
本文整理了Java中org.apache.hadoop.yarn.YarnUncaughtExceptionHandler.uncaughtException()方法的一些代码示例,展示了YarnUn
本文整理了Java中org.joda.time.tz.ZoneInfoProvider.uncaughtException()方法的一些代码示例,展示了ZoneInfoProvider.uncaugh
我是一名优秀的程序员,十分优秀!