Android 为什么应用程序突然关闭而没有显示任何错误?

Android 为什么应用程序突然关闭而没有显示任何错误?,android,Android,我的应用程序做什么?该应用程序正在从照片库中选择一张照片 我的问题是什么?一旦我从“多媒体资料”中选择照片,它就会自动关闭 我做了什么?我增加了设备的内存,但它不起作用。我把它从proyect中拿出来,活动进行得很好,它又回到了活动中 主要问题是什么?它在项目上不起作用,我说不出原因 你想看看发生了什么吗?这是一段视频。第一次是当它关闭时,第二次是当我从另一个项目中执行它并且工作正常时 编辑 我的问题是,一旦我从图库中选择图片,堆栈上就没有任何活动 为什么? 问题出在manifest的and

我的应用程序做什么?该应用程序正在从照片库中选择一张照片

我的问题是什么?一旦我从“多媒体资料”中选择照片,它就会自动关闭

我做了什么?我增加了设备的内存,但它不起作用。我把它从proyect中拿出来,活动进行得很好,它又回到了活动中

主要问题是什么?它在项目上不起作用,我说不出原因

你想看看发生了什么吗?这是一段视频。第一次是当它关闭时,第二次是当我从另一个项目中执行它并且工作正常时


编辑

我的问题是,一旦我从图库中选择图片,堆栈上就没有任何活动

为什么?

问题出在manifest的android:noHistory=“true”标签上,因为没有历史记录,画廊找不到任何活动,因此关闭了应用程序


守则:

我用于打开图库并选择照片的意图:

public void openGallery(int req_code){

   Intent intent = new Intent();
   intent.setType("image/*");
   intent.setAction(Intent.ACTION_GET_CONTENT);
   startActivityForResult(Intent.createChooser(intent,"Select file to upload "), req_code);
}
onActivityResult,我从中获取数据,但由于数据关闭,因此从未调用该数据:

public void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (resultCode == RESULT_OK) {
        Uri selectedImageUri = data.getData();
        if (requestCode == SELECT_FILE1)
        {
            selectedPath1 = getPath(selectedImageUri);
            System.out.println("selectedPath1 : " + selectedPath1);
        }
        if (requestCode == SELECT_FILE2)
        {
            selectedPath2 = getPath(selectedImageUri);
            System.out.println("selectedPath2 : " + selectedPath2);
        }
        tv.setText("Selected File paths : " + selectedPath1 + "," + selectedPath2);
    }
}
日志:

01-05 15:18:14.569: I/ActivityManager(59): Starting activity: Intent {   act=android.intent.action.UPLOADIMAGEDEMO cmp=com.example/.UploadImageDemo }
01-05 15:18:15.779: D/dalvikvm(2496): GC_EXTERNAL_ALLOC freed 2697 objects / 189152 bytes in 92ms
01-05 15:18:16.599: I/ActivityManager(59): Displayed activity com.example/.UploadImageDemo: 1953  ms (total 1953 ms)
01-05 15:18:21.899: D/dalvikvm(279): GC_EXPLICIT freed 871 objects / 134112 bytes in 217ms
01-05 15:18:26.620: I/ActivityManager(59): Starting activity: Intent {  act=android.intent.action.CHOOSER cmp=android/com.android.internal.app.ChooserActivity (has extras) }
01-05 15:18:28.250: I/ActivityManager(59): Starting activity: Intent {  act=android.intent.action.GET_CONTENT typ=image/* flg=0x3000000  cmp=com.android.gallery/com.android.camera.ImageGallery }
01-05 15:18:28.670: D/dalvikvm(279): GC_EXTERNAL_ALLOC freed 388 objects / 53352 bytes in 60ms
01-05 15:18:28.850: D/dalvikvm(279): GC_EXTERNAL_ALLOC freed 326 objects / 90664 bytes in 53ms
01-05 15:18:29.200: I/ActivityManager(59): Displayed activity    com.android.gallery/com.android.camera.ImageGallery: 873 ms (total 2345 ms)
01-05 15:18:29.420: D/dalvikvm(279): GC_EXTERNAL_ALLOC freed 725 objects / 106960 bytes in 140ms
01-05 15:18:30.430: W/InputManagerService(59): Starting input on non-focused client         com.android.internal.view.IInputMethodClient$Stub$Proxy@45020da8 (uid=10002 pid=279)
01-05 15:18:32.010: D/dalvikvm(112): GC_FOR_MALLOC freed 9994 objects / 476368 bytes in 149ms

我希望社区能帮助我

正常情况下,如果我们试图将图片加载为大尺寸的位图/可绘制图片(取决于操作系统分配的堆内存),Android应用程序将崩溃;例如:1mb大小或更大的图像

尝试加载小尺寸图像,并检查问题是否仍然存在。 通常,崩溃发生在与BitmapFactory.*相关的代码上

Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),
       R.drawable.android);

很难说到底什么是错误的,因为跟踪不包含任何异常消息。但我可以分享一段代码:

发布意图

private final int GALLERY_REQUEST = 0;

private void runGallery() {
  Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
  startActivityForResult(intent, GALLERY_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        Uri selectedPictureUri = data.getData();
        loadGalleryAttachment(selectedPictureUri);
    }
}

private void loadGalleryAttachment(Uri uri){
    if (uri != null) {
        String path = getPath(uri);
        File f = new File(path);
        // do something with picture file   
    }
}

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    if (cursor != null) {
      int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
      cursor.moveToFirst();
      return cursor.getString(column_index);
    } 
}
处理结果

private final int GALLERY_REQUEST = 0;

private void runGallery() {
  Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
  startActivityForResult(intent, GALLERY_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        Uri selectedPictureUri = data.getData();
        loadGalleryAttachment(selectedPictureUri);
    }
}

private void loadGalleryAttachment(Uri uri){
    if (uri != null) {
        String path = getPath(uri);
        File f = new File(path);
        // do something with picture file   
    }
}

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    if (cursor != null) {
      int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
      cursor.moveToFirst();
      return cursor.getString(column_index);
    } 
}

希望它能帮助你

好了,伙计们,首先非常感谢你们的回答,他们帮助我今天继续前进

问题出在manifest的android:noHistory=“true”标签上,因为没有历史记录,画廊找不到任何活动,因此关闭了应用程序


再次感谢大家。

//对不起,我没有足够的声誉来评论公认的答案,但我想我的案例将对其他有同样问题的人有所帮助

我在另一个开发人员编写的代码中遇到了保存问题,并为此挣扎了几天。但清单中并没有android:noHistory属性,但启动活动时带有标志“活动”和“否历史”

像这样:

intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

我在谷歌上搜索了几个小时,两次找到了这个问题,但直到我决定在整个项目中搜索“历史”一词时才找到答案

视频+1!您是否也在真实设备上试用过?这不是logcat输出的正确部分。从IDE运行应用程序直到崩溃,然后在logcat中搜索“超出预算”。如果你找到了,请张贴相关部分。哦,视频也是+1…克里斯,我用一台真正的设备试过了,它一直在发生。西蒙,我找到了原因,把它贴在下面。谢谢你们的帮助。维亚切斯拉夫谢谢你们的帮助我找到了我问题的答案。谢谢你们的帮助。我找到了我问题的实际答案。