- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Activity 有时会突然终止,但没有任何异常被报告或记录。 Activity 突然结束,应用程序返回到堆栈中的上一个 Activity。我正在使用 ACRA ( http://code.google.com/p/acra/ ) 来捕获和报告错误,它适用于应用程序中的所有其他错误,但在这种情况下,它没有检测到任何已抛出的异常。 Logcat 中也没有任何报告。
它总是在应用程序中的相同“位置”发生,当用户执行某个操作时,但它非常断断续续,我还没有在附加调试器时让它发生。是否有任何其他选项(除了 ACRA 和 Logcat)来确定 Activity 发生了什么?或者这是 Android Activity 世界中“已知”的东西?
如果重要的话,这个Activity正在做位图操作和保存;我不得不采取措施避免潜在的内存不足错误;但是当 OOM 异常确实发生时,我收到了 ACRA 报告,所以我认为这不是由 OOME 引起的。
在它似乎失败的地方,Activity 创建一个 AsyncTask 并执行它。这是 AsyncTask 的代码(ActivityAsyncTask 是一个非常简单的父类(super class);EditPhotoEctivity 是在创建或执行此任务期间无一异常(exception)地死亡的类):
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.media.MediaScannerConnection;
import android.media.MediaScannerConnection.MediaScannerConnectionClient;
import android.net.Uri;
import android.view.View;
public class CompositeAndSavePictureTask extends ActivityAsyncTask<File, Void, Uri>
implements MediaScannerConnectionClient {
public static final String FILE_EXTENSION = ".jpg";
private static final int COMPRESSION_QUALITY = 100;
private File file;
private Uri mSavedImageUri;
private MediaScannerConnection mMediaScannerConnection;
public CompositeAndSavePictureTask(EditPhotoActivity owningActivity) {
super(owningActivity);
mMediaScannerConnection = new MediaScannerConnection(owningActivity, this);
}
@Override
protected EditPhotoActivity getOwner() {
return (EditPhotoActivity) super.getOwner();
}
@Override
protected void onPreExecute() {
getOwner().toggleControlsVisibility(false);
}
@Override
protected Uri doInBackground(File... params) {
file = params[0];
Bitmap picture = null;
View mainContentView = getMainContentView();
try {
picture = captureBitmap(mainContentView);
saveBitmap(picture);
} catch (Exception ex) {
LogUtils.logError(this, "Could not save photo", ex);
setError(ex);
return null;
} finally {
cleanUpCapture(mainContentView, picture);
}
try {
mMediaScannerConnection.connect();
synchronized (mMediaScannerConnection) {
mMediaScannerConnection.wait();
}
} catch (InterruptedException ex) {
LogUtils.logInfo(this, "MediaScannerConnection was interrupted during scan.");
setError(ex);
}
return mSavedImageUri;
}
protected Bitmap captureBitmap(View mainContentView) throws Exception {
mainContentView.setDrawingCacheEnabled(true);
return mainContentView.getDrawingCache();
}
protected void cleanUpCapture(View mainContentView, Bitmap capturedBitmap) {
mainContentView.setDrawingCacheEnabled(false);
if (capturedBitmap != null) {
capturedBitmap.recycle();
}
}
protected void saveBitmap(Bitmap bitmap) throws IOException {
BufferedOutputStream outStream = null;
try {
outStream = new BufferedOutputStream(FileUtils.openOutputStream(file));
bitmap.compress(CompressFormat.JPEG, COMPRESSION_QUALITY, outStream);
} finally {
try {
if (outStream != null) {
outStream.close();
}
} catch (IOException ex) {
LogUtils.logError(this, "Could not close output stream", ex);
}
}
}
@Override
protected void onPostExecute(Uri savedFileURI) {
getOwner().toggleControlsVisibility(true);
getOwner().onSaveResult(savedFileURI);
}
public void onMediaScannerConnected() {
mMediaScannerConnection.scanFile(file.getPath(), null /* mimeType */);
}
public void onScanCompleted(String path, Uri uri) {
mMediaScannerConnection.disconnect();
mSavedImageUri = uri;
synchronized (mMediaScannerConnection) {
mMediaScannerConnection.notify();
}
}
}
另见 view.getDrawingCache() only works once ,这有一些关系,但情况略有不同。
欢迎任何想法。
最佳答案
我之前遇到过类似的问题。我试图打开一个文件进行阅读,但我没有输入完整的地址“/sdcard/something.txt”,而是给了它错误的路径(只是“something.txt”),没有 sdcard 部分。在经历了很多痛苦之后,我发现如果你想让程序打开一些不存在的东西, Activity 就会在没有任何通知的情况下结束(到控制台,到 logcat 等)。因为它不会发回错误,所以它不会继续“catch”分支。
因此,我建议检查文件操作。
免责声明:我确信这会在尝试使用 ndk 和 native 代码打开错误的路径时导致这种行为,但我想如果您在 Java 代码中犯了这个错误,情况也是一样的。
关于android - Activity 突然终止,无一异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5156136/
无论我在做什么,我都会得到这个输出,但模拟器不会启动,新创建的模拟器也不会启动。我在 Windows 下: 警告:./android/base/files/IniFile.cpp:155:无法处理 .
我用 package.json NPM 脚本中像这样的变量: // package.json { "version": "0.12.1", "scripts": { "get-vers
几天前,Facebook 与我们网站的连接突然停止工作,代码没有任何更改??? Facebook 做了一些改变??? http://www.presbium.sk/vstup-pre-uchadzac
我习惯于 grunt build 任务成功完成,但由于我将我的项目编辑与其他开发人员同事合并,它突然失败并出现我以前从未见过的错误: grunt build Loading "imagemin.js"
我不明白这个。突然之间,我无法使用 iOS 9.0 中引入的 UIUserNotificationActionResponseTypedTextKey 标识符来访问通知中的文本输入消息。 Xcode
在我调用某个 Google 的 Youtube 库后,我的应用程序在其回调之一后突然变得完全没有响应。 无响应意味着无法点击所有 UI 组件。 在 iOS 中是否有这样的东西可以禁用整个屏幕完全不响应
bool queueIsFull(int rearPointer) { if(rearPointer==9) return 1; else return
我正在使用 PHP、Apache 和 MySQL 开发 Web 应用程序。在过去的一年中,此应用程序的响应时间一直不错。昨天,应用程序在 Firefox 上突然变得非常慢(完整的页面加载,包括 CSS
几个小时后,从控制台发出的 PHP 命令不再接受本地路径。例如在 laravel 中我总是给出命令 php artisan 但从今晚开始我收到了以下回复 Status: 404 Not Found C
我有一个 session WCF 服务,它生成一个进程并在调用 IsInitiating 操作时打开一个到该进程的命名管道。当调用 IsTerminating 操作时,服务会沿着管道发送一条消息,通知
类似的问题已经回答了好几次,我确实检查了其中的许多问题。这是不同的,请继续阅读。 我在 strings.xml 中定义了大量(大量)字符串,并带有多个格式参数。例如: %s and also %s 这
我有一个简单的消息机器人,它是根据 Messenger 平台指南设置的。在过去的几个月里,它一直运行良好,每天发送大约六条消息。我根本没有碰它,但是突然,发送消息,即调用 https://graph.
我正在使用 Unity 开发一款简单的 3D 手机游戏。我的目标是在没有垂直同步的情况下达到 30 FPS。我的游戏在所有 iOS 设备上运行良好,没有发热和节流,但有奇怪的 FPS 下降。 FPS
我们有一个自定义小部件,多年来一直运行良好,直到上周。 看来 Json 回调现在仅适用于播放列表,不适用于轨道。 播放列表 /**/jQuery31108094578850496614_1482167
-bash:/Users/winchenzo/git-completion.bash: 没有那个文件或目录 -bash:/Users/winchenzo/git-prompt.sh: 没有那个文件或目
编辑:重启解决了问题。我仍然想知道最初是什么原因造成的,因为这种情况以前发生过一次,但我不记得当时我做了什么来修复它(当时重新启动并没有解决问题)。 我 cd 到包含我要编辑的文件的文件夹,然后从命令
我刚刚注册是因为我突然遇到了一个问题,目前为止运行良好的代码我之前在这里找到了一些非常好的答案。希望你们能再次帮助我,这次甚至是投票;) $sql='SELECT projektKurz, proje
我制作了一个小程序,它在 tcp 套接字上监听和发送线路,并将接收到的信息附加到 JTextArea。我用它在 Minecraft 服务器上聊天,而无需打开游戏。 我昨晚工作得很好,但当我起床时却不工
感谢您在这里查看我的问题。 我正在使用 Glide 从 Firebase 存储中获取图像,基本上我是在使用 url 从存储中获取图像。第一天它工作正常但突然停止获取图像。我没有碰代码。我检查了很多答案
FCM 通知已到达所有 iOS 设备。但通知在大约 1 年前注册的某些设备上不起作用。 FCM token 和 APNs token 似乎没有变化。为什么没有到达通知? FCM token 是否必须过
我是一名优秀的程序员,十分优秀!