我一直在努力创建一个活动结果,但保持调用者活动似乎是不可能的。
我已尝试在清单中设置调用者活动" android:onConfigChanges"用于screenSize,orientation和keyboardHidden。
这非常重要,因为在调用者Activity中,Asyn Task从Web服务加载内容。
当在拍摄照片后恢复活动时,调用者活动被破坏并从Web服务再次加载整个UI并销毁用户输入。有办法防止这种情况吗?
这是相机意图的来电方法。
private void openCamera(){
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// Ensure that there's a camera activity to handle the intent
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
//takePictureIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); <- Commented and not commented with the same problem.
// Create the File where the photo should go
try {
photoFile = createImageFile();
} catch (IOException ex) {
ex.printStackTrace();
}
// Continue only if the File was successfully created
if (photoFile != null) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
}
这是&#34; createImageFile()&#34;:
private File createImageFile() throws IOException {
// Create an image file name
File file;
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = timeStamp + "_";
File storageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "myAppDirectory");
if (!storageDir.mkdir()){
storageDir.mkdirs();
};
file = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
mCurrentPhotoPath = file.getAbsolutePath();
return file;
}
答案 0 :(得分:2)
我一直在努力创建一个活动结果,但保持调用者活动似乎是不可能的。
最有可能的是,由于内存不足,您的进程正在终止。当使用ACTION_IMAGE_CAPTURE
或其他启动第三方相机应用的操作时,这是相当典型的。它也发生在许多其他地方,因为你的应用程序的过程不会永远存在。
这非常重要,因为在调用者Activity中,Asyn Task从Web服务加载内容。
请注意,当您的流程终止时,很多其他情况,您需要能够处理此问题。因此,如果您的问题是重新进行Web服务调用,请将先前调用的结果缓存到文件中,并且只有在缓存的结果过时时才重新发出调用。您可能还会考虑您的活动是否应该进行此Web服务调用,将该逻辑转换为IntentService
。