Android-Activity似乎在意图返回后不会被调用

Android-Activity似乎在意图返回后不会被调用,android,Android,我有一个活动,您可以单击一个按钮,将您发送到一个可以添加图片的活动(使用startActivityForResult)。您可以添加几张图片。您添加的每幅图片都将转换为byte[]数组,并作为额外图片存储在结果中。当第二个活动完成时,如果我添加了一张图片,并完成了该活动,则一切正常,它将使用按钮返回到上一个活动。如果我添加两张或更多的图片,并完成第二个活动,则前一个活动甚至不会被调用。通过按钮,我可以直接进入活动之前的活动,但首先我看到一个黑屏,似乎前一个活动崩溃了,尽管在日志中找不到错误。上一个

我有一个活动,您可以单击一个按钮,将您发送到一个可以添加图片的活动(使用startActivityForResult)。您可以添加几张图片。您添加的每幅图片都将转换为byte[]数组,并作为额外图片存储在结果中。当第二个活动完成时,如果我添加了一张图片,并完成了该活动,则一切正常,它将使用按钮返回到上一个活动。如果我添加两张或更多的图片,并完成第二个活动,则前一个活动甚至不会被调用。通过按钮,我可以直接进入活动之前的活动,但首先我看到一个黑屏,似乎前一个活动崩溃了,尽管在日志中找不到错误。上一个Activity中的OnActivityResult也不会被调用。为什么会发生这种情况

向照片添加活动发送意图的代码:

Intent addEditPicturesIntent = new Intent(getApplicationContext()
                        ,AddOrEditPicturesOnProductActivity.class);
                startActivityForResult(addEditPicturesIntent,33);
完成照片添加活动的代码:

Intent returnIntent=new Intent();
                if (hashMap.containsKey("one")){
                    Log.d(TAG,"Submit Button clicked and now putting extra in intent-->1");
                    returnIntent.putExtra("1",hashMap.get("one"));

                }
                if (hashMap.containsKey("two")){
                    Log.d(TAG,"Submit Button clicked and now putting extra in intent-->2");

                    returnIntent.putExtra("2",hashMap.get("two"));
                }
                if (hashMap.containsKey("three")){
                    Log.d(TAG,"Submit Button clicked and now putting extra in intent-->3");

                    returnIntent.putExtra("3",hashMap.get("three"));
                }
                setResult(Activity.RESULT_OK, returnIntent);
                finish();
使用按钮的“活动”中的onActivityResult代码:

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d(TAG,"onAcitivtyResult"); // <--- NOT EVEN THIS GETS CALLED when returning

        if (//uninmportant stuff){
        //Other uninporant stuff
        else if(requestCode == 33){
            Log.d(TAG,"[Test Return Code returned]!");
            Log.d(TAG,data.getExtras().toString());
            Bundle bundle=data.getExtras();
            List<ProductImage> productImageList=new ArrayList<>();
            for (Integer i=1;i<=3;i++){
               if ( bundle.getByteArray(i.toString())!=null){
                   ProductImage productImage=new ProductImage();
                   productImage.setImageBytes(bundle.getByteArray(i.toString()));
                   productImageList.add(productImage);
               }
            }
            addProductViewModel.fillUpMutableLiveData(productImageList);
            addProductViewModel.updateCurrentId(0);
        }
    }
@覆盖
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
Log.d(标记“onAcitivtyResult”);//
您添加的每幅图片都将转换为byte[]数组,并作为额外图片存储在结果中

这真是个坏主意

虽然在日志中找不到错误

您可能会收到“绑定器事务失败”警告

为什么会发生这种情况

我的猜测是您试图通过IPC传递太多数据。您提供给
setResult()
Intent
将从您的应用程序传递到核心操作系统进程,然后返回到您的应用程序和
startActivityForResult()的调用者
。在IPC事务中,最多可以通过1MB,根据当时的情况,限制可能会大大降低

要么:

  • 通过对UI的各个位使用片段,并使用共享的
    ViewModel
    将一个片段的结果公开给另一个片段,进行一项而不是两项活动;或

  • 小心地将这些图像保存在共享缓存中,以便将缓存键作为附加项传递,而不是
    字节[]
    ;或者

  • 找到一些您喜欢的其他体系结构,这些体系结构不涉及将大的
    字节[]
    值放入
    意图
    中,以便与
    startActivity()
    startActivityForResult()
    setResult()一起使用


活动调用代码在哪里?请将您的代码剪下以便更好地理解。添加到postYeah的代码我非常确定这是一个可怕的想法,如果失败,我将使用一个片段来完成。我只是不明白为什么失败。也许,与其存储整个图像以发送回去,不如存储URI或其他什么?