编程语言
首页 > 编程语言> > java-共享意图需要很长时间才能显示

java-共享意图需要很长时间才能显示

作者:互联网

我正在尝试在应用程序中包含图像共享,并且一切正常,但是共享选择器需要很长时间才能显示在设备上

这是我在做什么:

我有ImageView“ items_details_image”,我想共享它的图像以便能够通过whatsapp和其他应用发送

void ShareImg() {
    try {
        Uri bmpUri = getLocalBitmapUri(items_details_image);
        if (bmpUri != null) {
            // Construct a ShareIntent with link to image
            Intent shareIntent = new Intent();
            shareIntent.setAction(Intent.ACTION_SEND);
            shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri);
            shareIntent.setType("image/*");
            // Launch sharing dialog for image
            startActivity(Intent.createChooser(shareIntent, "Share Image"));
        } else {
            // ...sharing failed, handle error
        }
    } catch (Exception e) {

    }
}

这是我从图像URL获取位图的方法

public Uri getLocalBitmapUri(ImageView imageView) {
    // Extract Bitmap from ImageView drawable
    Drawable drawable = imageView.getDrawable();
    Bitmap bmp = null;
    if (drawable instanceof BitmapDrawable){
        bmp = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
    } else {
        return null;
    }
    // Store image to default external storage directory
    Uri bmpUri = null;
    try {
        File file =  new File(Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOWNLOADS), "share_image_" + System.currentTimeMillis() + ".png");
        file.getParentFile().mkdirs();
        FileOutputStream out = new FileOutputStream(file);
        bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
        out.close();
        bmpUri = Uri.fromFile(file);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return bmpUri;
}

我不知道为什么与同一个设备(如图库)或其他设备上的其他应用程序相比,它花费的时间比平时更长

解决方法:

您正在主应用程序线程的getLocalBitmapUri()中进行磁盘I / O.只要将位图写入磁盘,就会冻结UI.

标签:start-activity,android-intent,android-intent-chooser,java,android
来源: https://codeday.me/bug/20191111/2020263.html