簡體   English   中英

Google地圖 - TransactionTooLargeException

[英]Google Maps - TransactionTooLargeException

我正在使用正常意圖啟動Google地圖並啟動疊加按鈕服務以返回我的應用。

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地圖崩潰時出現以下異常:

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) 

我不知道我做錯了什么,所以地圖崩潰了? 我的FloatingMapIconSerivce類中的Intent標志有什么問題嗎? 我想清除堆棧,因此如果用戶按下后退按鈕,他應該返回到地圖或返回主屏幕而不是任務堆棧中的先前MainActivity

當您嘗試在intent中傳遞大包時發生TransactionTooLargeException。 在N個設備下面,異常是在android N下面處理的,但是安裝了Android版本N及以上的設備,不處理異常。

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

Google建議將所有交易保持在非常小的水平。 啟動活動時檢查意圖的大小並捆綁數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM