2017-12-06 12 views
-2

ここで1Mb以上のデータを渡そうとしていますが、データがビットマップまたは文字列である可能性があります。アンドロイド.os.TransactionTooLarge例外はアプリケーションによってスローされますが、APIレベルは24未満です。単純な警告でしたが、> = 24 APIレベルではアプリケーションクラッシュが発生するため、このトランザクションが有効かどうか、このトランザクションが有効であるかどうかを示すAPIはありません。取引が有効であることを事前に知ることはできますか?例えばandroid.os.TransactionTooLargeを確認する方法

Intent sendIntent = new Intent(Intent.ACTION_SEND); 
sendIntent.setType("text/plain"); 
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is too long string data..."); 
startActivity(sendIntent); 
+0

あなたはどんな取引をしていますか?フラグメント、データベース、... – Henry

+0

インテントを使用する1つのアプリケーションから他のアプリケーションにデータを渡します –

+0

[最大インテントputExtraメソッドの長さ? (強制終了)](https://stackoverflow.com/questions/12496700/maximum-length-of-intent-putextra-method-force-close) – Henry

答えて

0

(URLのいくつかの並べ替えなど)バイト配列を取得し、this linkとしてカウントできます。

おそらく、これらのオブジェクトをアクティビティ間のバンドルに渡すべきではありません。代わりに、それをSingletonオブジェクトに入れたり、LRUキャッシュに入れたり、永続化したりすることができます。

アプリのプロセスが終了した場合でもオブジェクトをそのまま維持する必要がある場合は、唯一のオプションがそのまま維持されます。

+0

はい、これは有効な最初です私はバイトを測定してからトランザクションを行った後、私は他のアプリケーションに1MB以上のデータを渡したいのですか? –

+0

アプリの間にある場合は、同じ原則が適用されます。あなたはパブリックな方法でそれを永続化する必要があります(外部のディレクトリやパブリック共有の環境設定のファイルなのでしょうか)。 – BMacedo

+0

または、WhatsAppやFBのようなソーシャルメディアアプリのようなデータを渡したら? –

0

そのAPIはない扶養、あなたは1メガバイトを超えるデータを転送することはできませんそのバンドル制限。

私はあなたが話しているデータ型についてはよく分からないですが、あなたはそれを持続し、それを共有する必要があなたが本当に文字列やビットマップの大きさを測定する必要がある場合は

関連する問題