gpt4 book ai didi

java - 谷歌地图 - TransactionTooLargeException

转载 作者:太空狗 更新时间:2023-10-29 14:41:45 26 4
gpt4 key购买 nike

我正在使用正常 Intent 启动 Google map ,并启动覆盖按钮服务以返回我的应用程序。

Intent iconServiceIntent = new Intent(MainActivity.this, FloatingMapIconService.class);
final String mapsUri = "com.google.android.apps.maps";
// lastRequestedAddress is e.g. "Berlin"
Uri intentUri = Uri.parse(String.format("google.navigation:q=%s&mode=b", lastRequestedAddress));
Intent mapIntent = new Intent(Intent.ACTION_VIEW, intentUri);
mapIntent.setPackage(mapsUri);

if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
startService(iconServiceIntent);
}

点击覆盖按钮时:

Intent intent = new Intent(FloatingMapIconService.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
FloatingMapIconService.this.startActivity(intent);
//stopping the service
FloatingMapIconService.this.stopSelf();

Google map 崩溃,出现以下异常:

Process: com.google.android.apps.maps, PID: 4586
java.lang.RuntimeException: tname=main - android.os.TransactionTooLargeException: data parcel size 2832148 bytes
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:4209)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
Caused by: android.os.TransactionTooLargeException: data parcel size 2832148 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:628)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:4183)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:4201)
at android.os.Handler.handleCallback(Handler.java:751) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6776) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386) 

我不知道我做错了什么,以至于 map 崩溃了?我的 FloatingMapIconSerivce 类中的 Intent 标志有问题吗?我想清除堆栈,所以如果用户按下后退按钮,他应该返回 map 或返回主屏幕,而不是返回到上一个 MainActivity 任务栈。

最佳答案

TransactionTooLargeException 当您试图在 Intent 中传递一个大包时发生。 N以下的设备,android N以下的异常处理,android N及以上的设备,不处理异常。

https://developer.android.com/reference/android/os/TransactionTooLargeException.html

Google 建议保持所有交易都非常小。开始 Activity 时检查 Intent 和 bundle 数据的大小。

关于java - 谷歌地图 - TransactionTooLargeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46904403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com