簡體   English   中英

為什么未在我的Android設備上調用LibGDX的resume()方法?

[英]Why does LibGDX's resume() method not get called on my Android devices?

我有多個運行Android操作系統的設備。 我一直在構建LibGDX游戲,並且一直遇到問題,即用戶每次按下主屏幕按鈕然后繼續重新進入該應用程序時,該應用程序都會重新啟動。 我不要這個 最近,我一直在與很多人交談,試圖弄清為什么我的resume()方法不能在我的設備上運行。 這是可以幫助我重新加載數據/資產並使游戲保持在用戶退出前狀態的方法

所以告訴我:為什么我的設備不運行這個pause()方法,而其他很多設備卻運行呢?

記錄一下:我測試的兩個設備是Galaxy S4手機和Nexus 7平板電腦。

當Android系統不在前台時,您無法控制Android系統如何管理其生命周期。 因此,您需要處理所有可能的過渡。 設備在后台運行時可以自由終止您的應用程序(尤其是如果其使用相對大量的資源)。

在Libgdx中,僅在從掛起的實際恢復中調用resume方法(即,長按主鍵切換到其他應用,然后長按主鍵切換回另一個應用)。 其他框架(包括裸露的Android)通常在首次啟動時調用resume ,因此可能會引起混亂。 (只需將首次啟動的工作放在您的create回調中。)

有關Libgdx Android應用程序生命周期以及如何重新創建各種情況的更多詳細信息,請查看: http : //bitiotic.com/blog/2013/05/23/libgdx-and-android-application-lifecycle/

為了完成PT的答案,我想添加以下技巧。 LibGDX在第一次啟動時不調用簡歷真的是不直觀的。 但是您可以自己輕松模擬。

public void create() {
    resume();
}

public void resume() {
    // this is the only place where you will initialize all assets and your screen/game
}

不要在create()做任何事情,只需將工作轉發到resume() 這樣,您將沒有任何代碼重復,並且您的initcode將始終運行。

暫無
暫無

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

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