簡體   English   中英

Android在Galaxy Note上的Activity(Singleton)之間傳遞數據不起作用

[英]Android passing data between Activities (Singleton) on Galaxy Note does not work

我在Galaxy Note(gt-n7000)上遇到了問題。 似乎由於某些更改的需求,我無法直接通過startActivity(intent)在兩個活動之間傳遞數據。 因此,我實現了一個Singleton類:

public class IntentStack {
private static IntentStack instance;
private Map<String, Stack<Intent>> IntentMap = new HashMap<String, Stack<Intent>>();

    public synchronized static IntentStack getInstance() {
        if (instance == null) {
            instance = new IntentStack();
        }
        return instance;
    }

    private synchronized Stack<Intent> getStack(String key) {
        if (IntentMap.containsKey(key)) 
            return IntentMap.get(key);
        else 
            return null;
    }

    public synchronized Intent getTopIntent(String key) {
        if (IntentMap.containsKey(key)) {
            if (!getStack(key).isEmpty())
                return IntentMap.get(key).pop();
            else 
                return null;
        } else {
            return null;
        }
    }

    public synchronized void addIntent (String key, Intent intent) {
        Stack<Intent> newStack;
        if (IntentMap.containsKey(key)) {
            newStack = IntentMap.get(key);
        } else {
            newStack = new Stack<Intent>();
        }
        newStack.push(intent);
        IntentMap.put(key, newStack);
    }

    public synchronized void clearIntents(String key) {
        IntentMap.remove(key);
    }

}

在我的第一個活動中,我將數據放入IntentStack中,如下所示:

IntentStack.getInstance().addIntent(Core.getIm().getClassName("photobill"), takePictureIntent);

在第二個活動中,我嘗試獲得一個意圖:

Intent i = IntentStack.getInstance().getTopIntent(Core.getIm().getClassName("photobill"));

其中Core.getIm()。getClassName(string)從Map獲取其值,該Map在應用程序啟動時初始化。

問題是Intent inull但僅在Galaxy Note(gt-n7000)上有效。 在其他電話上,代碼正常工作。

什么可能導致這種行為? 我應該怎么做才能解決它?

Android不保證靜態變量會保留其值。 如果設備開始耗盡資源(內存),它將“取消分配”靜態變量。 這可能是您的情況。

首先,我將添加登錄

if (instance == null) {
   //ADD LOG HERE
   instance = new IntentStack();
}

查看您是否正在創建新實例。

暫無
暫無

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

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