我在 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 i
但null
仅限于 Galaxy Note (gt-n7000)。在其他手机上,代码可以正常工作。
什么可能导致这种行为?我应该怎么做才能解决它?