0

アプリへのリンクで文字列を共有しようとしています。これが私のコードです:

public static void shareApp(Activity activity){
    ShareCompat.IntentBuilder builder = ShareCompat.IntentBuilder.from(activity);
    builder.setText("some link")
           .setType("text/html");

    activity.startActivity(builder.createChooserIntent());
}

通常はうまく機能します。しかし、次のスタック トレースでエラーが発生することがあります。

0   java.lang.OutOfMemoryError: bitmap size exceeds VM budget
1  at  android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
2  at  android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:460)
3  at  android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:336)
4  at  android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
5  at  android.content.res.Resources.loadDrawable(Resources.java:1709)
6  at  android.content.res.Resources.getDrawable(Resources.java:581)
7  at  android.app.ContextImpl$ApplicationPackageManager.getDrawable(ContextImpl.java:2201)
8  at  android.content.pm.PackageItemInfo.loadIcon(PackageItemInfo.java:140)
9  at  android.content.pm.ComponentInfo.loadDefaultIcon(ComponentInfo.java:154)
10  at  android.content.pm.PackageItemInfo.loadIcon(PackageItemInfo.java:145)
11  at  android.content.pm.ResolveInfo.loadIcon(ResolveInfo.java:181)
12  at  com.android.internal.app.ResolverActivity$ResolveListAdapter.bindView(ResolverActivity.java:431)
13  at  com.android.internal.app.ResolverActivity$ResolveListAdapter.getView(ResolverActivity.java:415)
14  at  android.widget.AbsListView.obtainView(AbsListView.java:1430)
15  at  android.widget.ListView.measureHeightOfChildren(ListView.java:1216)
16  at  android.widget.ListView.onMeasure(ListView.java:1127)

または:

0   java.lang.OutOfMemoryError: bitmap size exceeds VM budget
1   at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
2   at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:460)
3   at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:336)
4   at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
5   at android.content.res.Resources.loadDrawable(Resources.java:1709)
6   at android.content.res.Resources.getDrawable(Resources.java:581)
7   at android.widget.AbsListView.setOverScrollMode(AbsListView.java:655)
8   at android.view.View.<init>(View.java:1879)
9   at android.view.View.<init>(View.java:1921)
10  at android.view.ViewGroup.<init>(ViewGroup.java:292)
11  at android.widget.AdapterView.<init>(AdapterView.java:228)
12  at android.widget.AbsListView.<init>(AbsListView.java:592)
13  at android.widget.ListView.<init>(ListView.java:163)
14  at android.widget.ListView.<init>(ListView.java:159)
15  at com.android.internal.app.AlertController$RecycleListView.<init>(AlertController.java:673)

このバグは、Android 2.3.6 を搭載した HTC Nexus One で再現されました。私は、このデバイスの問題だと思います。古くて遅いです。しかし、メソッドのラッパーを作成するか、startActivity()このクラッシュを停止する他の回避策を作成できますか?

4

1 に答える 1

0

logcat は、メモリが不足していることを示しています。

java.lang.OutOfMemoryError: bitmap size exceeds VM budget  

そして、あなたはそれが時々うまくいくと言ったので、私が提案できることは、最初Advanced Task ManagerGoogle PlayStore、.

もう 1 つの「回避策」はWeakReferencingビットマップで、最初にガベージ コレクションが行われるようにします。

于 2013-08-22T17:06:56.013 に答える