我通過擴展應用程序在我的應用程序中定義了一些全局變量,如下所示。當我離開應用程序時,打開更多應用程序並與他們玩一下,然後回到我的應用程序,全局變量已被刪除,我的應用程序崩潰。我有兩個問題:全局變量問題
1-這怎麼可能?
2-如何強制我的應用在退出背景時退出?我知道我不應該這樣做,但我不能找到其他的解決辦法...
感謝
public class GlobalVars extends Application {
public static HashMap<Integer, String> ID2Cat = new HashMap<Integer, String>();
// User logged bool
public static boolean isLogged = false;
// Current menu item
public static int currentMenuItem = 0;
public static boolean isHome = false;
// Goodideas
public static JSONObject goodIdeas = new JSONObject();
// Meteo
public static JSONArray weatherItems = new JSONArray();
// More stuff
}
logcat的
這裏是讓我覺得我的應用程序被殺害。在與其他應用程序一起玩時,會顯示這一點。
I/ActivityManager(2465): Process com.mysite.myapp (pid 23538) has died.
I/WindowManager(2465): WIN DEATH: Window{4852a678 com.mysite.myapp/com.mysite.myapp.Home paused=false}
I/WindowManager(2465): WIN DEATH: Window{485b63a8 com.mysite.myapp/com.mysite.myapp.Home paused=false}
I/WindowManager(2465): WIN DEATH: Window{4826fbf8 com.mysite.myapp/com.mysite.myapp.ItemList paused=false}
I/WindowManager(2465): WIN DEATH: Window{48286f90 com.mysite.myapp/com.mysite.myapp.ItemDetail paused=false}
W/GpsLocationProvider(2465): Unneeded remove listener for uid 1000
D/GpsLocationProvider(2465): stopNavigating
D/gps_BRCM(2465): [status check] on_stop() : GPS_STATUS_SESSION_END
D/gps_BRCM(2465): gps_engine_status_update 2
D/GpsLocationProvider(2465): send an intent to notify that the GPS has been enabled or disabled
D/gps_BRCM(2465): gps_stop: called
V/GpsLocationProvider(2465): hybridGpsSensorDeregister : No registered sensorManager
D/GpsLocationProvider(2465): hybridGpsSensorDeregister
你是什麼意思「初始化你的數據」。啓動應用程序時,會顯示一個啓動畫面,在此期間所有全局變量都將被初始化。沒有辦法讓數據只在應用程序被終止時被刪除(即當所有活動完成時)? – jul
@jul:「啓動應用程序時,會顯示一個啓動畫面,在此期間所有全局變量都將被初始化。」 - 這不是一個明智的舉動。 「沒有辦法讓數據只在應用程序被終止時被刪除(即當所有活動完成時)?」 - 這就是已經發生的事情。但是,當操作系統決定時,「所有活動都已完成」,可以隨時進行。如果用戶離開您的應用,則Android可以隨時完成活動並終止流程。 – CommonsWare
爲什麼將所有數據加載到啓動畫面(即啓動應用程序時)不是一個明智之舉?我從Web服務獲取它們,然後執行http請求+解析json會使應用程序的響應速度變慢。此外,當我在後臺打開應用程序(例如使用其他應用程序)時,它應該再次啓動並加載我的init數據,或者如果活動未被終止,則從我離開的位置開始。在前一種情況下,如果活動仍然存在,我的全局變量不應該被刪除,對吧? – jul