Bug 995803 - fix crash in java.lang.IllegalStateException: Already registered Webapps. r=mfinkle

This commit is contained in:
James Hugman 2014-05-19 08:36:00 +02:00
Родитель 4fe4d33b74
Коммит d05119d3c9
2 изменённых файлов: 14 добавлений и 19 удалений

Просмотреть файл

@ -213,6 +213,7 @@ public abstract class GeckoApp
private int mSignalStrenth;
private PhoneStateListener mPhoneStateListener = null;
private boolean mShouldReportGeoData;
private EventListener mWebappEventListener;
abstract public int getLayout();
abstract public boolean hasTabsSideBar();
@ -1547,7 +1548,11 @@ public abstract class GeckoApp
"Update:Download",
"Update:Install");
EventListener.registerEvents();
if (mWebappEventListener == null) {
mWebappEventListener = new EventListener();
mWebappEventListener.registerEvents();
}
if (SmsManager.getInstance() != null) {
SmsManager.getInstance().start();
@ -2081,7 +2086,10 @@ public abstract class GeckoApp
"Update:Download",
"Update:Install");
EventListener.unregisterEvents();
if (mWebappEventListener != null) {
mWebappEventListener.unregisterEvents();
mWebappEventListener = null;
}
deleteTempFiles();

Просмотреть файл

@ -42,20 +42,8 @@ public class EventListener implements GeckoEventListener {
private static final String LOGTAG = "GeckoWebappEventListener";
private EventListener() { }
private static EventListener mEventListener;
private static EventListener getEventListener() {
if (mEventListener == null) {
mEventListener = new EventListener();
}
return mEventListener;
}
public static void registerEvents() {
EventDispatcher.getInstance().registerGeckoThreadListener(
EventListener.getEventListener(),
public void registerEvents() {
EventDispatcher.getInstance().registerGeckoThreadListener(this,
"Webapps:Preinstall",
"Webapps:InstallApk",
"Webapps:Postinstall",
@ -64,9 +52,8 @@ public class EventListener implements GeckoEventListener {
"Webapps:GetApkVersions");
}
public static void unregisterEvents() {
EventDispatcher.getInstance().unregisterGeckoThreadListener(
EventListener.getEventListener(),
public void unregisterEvents() {
EventDispatcher.getInstance().unregisterGeckoThreadListener(this,
"Webapps:Preinstall",
"Webapps:InstallApk",
"Webapps:Postinstall",