remove wakelocks in XmlReader
This commit is contained in:
parent
42c807ead8
commit
f2bbb6087c
|
@ -1,7 +1,5 @@
|
||||||
package eu.siacs.conversations.xml;
|
package eu.siacs.conversations.xml;
|
||||||
|
|
||||||
import android.os.PowerManager;
|
|
||||||
import android.os.PowerManager.WakeLock;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Xml;
|
import android.util.Xml;
|
||||||
|
|
||||||
|
@ -16,17 +14,15 @@ import eu.siacs.conversations.Config;
|
||||||
|
|
||||||
public class XmlReader {
|
public class XmlReader {
|
||||||
private XmlPullParser parser;
|
private XmlPullParser parser;
|
||||||
private PowerManager.WakeLock wakeLock;
|
|
||||||
private InputStream is;
|
private InputStream is;
|
||||||
|
|
||||||
public XmlReader(WakeLock wakeLock) {
|
public XmlReader() {
|
||||||
this.parser = Xml.newPullParser();
|
this.parser = Xml.newPullParser();
|
||||||
try {
|
try {
|
||||||
this.parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
|
this.parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
|
||||||
} catch (XmlPullParserException e) {
|
} catch (XmlPullParserException e) {
|
||||||
Log.d(Config.LOGTAG, "error setting namespace feature on parser");
|
Log.d(Config.LOGTAG, "error setting namespace feature on parser");
|
||||||
}
|
}
|
||||||
this.wakeLock = wakeLock;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setInputStream(InputStream inputStream) throws IOException {
|
public void setInputStream(InputStream inputStream) throws IOException {
|
||||||
|
@ -53,16 +49,8 @@ public class XmlReader {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Tag readTag() throws XmlPullParserException, IOException {
|
public Tag readTag() throws XmlPullParserException, IOException {
|
||||||
if (wakeLock.isHeld()) {
|
|
||||||
try {
|
|
||||||
wakeLock.release();
|
|
||||||
} catch (RuntimeException re) {
|
|
||||||
Log.d(Config.LOGTAG,"runtime exception releasing wakelock before reading tag "+re.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
while (this.is != null && parser.next() != XmlPullParser.END_DOCUMENT) {
|
while (this.is != null && parser.next() != XmlPullParser.END_DOCUMENT) {
|
||||||
wakeLock.acquire();
|
|
||||||
if (parser.getEventType() == XmlPullParser.START_TAG) {
|
if (parser.getEventType() == XmlPullParser.START_TAG) {
|
||||||
Tag tag = Tag.start(parser.getName());
|
Tag tag = Tag.start(parser.getName());
|
||||||
final String xmlns = parser.getNamespace();
|
final String xmlns = parser.getNamespace();
|
||||||
|
@ -89,14 +77,6 @@ public class XmlReader {
|
||||||
|
|
||||||
} catch (Throwable throwable) {
|
} catch (Throwable throwable) {
|
||||||
throw new IOException("xml parser mishandled "+throwable.getClass().getSimpleName()+"("+throwable.getMessage()+")", throwable);
|
throw new IOException("xml parser mishandled "+throwable.getClass().getSimpleName()+"("+throwable.getMessage()+")", throwable);
|
||||||
} finally {
|
|
||||||
if (wakeLock.isHeld()) {
|
|
||||||
try {
|
|
||||||
wakeLock.release();
|
|
||||||
} catch (RuntimeException re) {
|
|
||||||
Log.d(Config.LOGTAG,"runtime exception releasing wakelock after exception "+re.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,6 @@ package eu.siacs.conversations.xmpp;
|
||||||
|
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
import android.os.PowerManager;
|
|
||||||
import android.os.PowerManager.WakeLock;
|
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.security.KeyChain;
|
import android.security.KeyChain;
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
|
@ -105,7 +103,6 @@ public class XmppConnection implements Runnable {
|
||||||
private static final int PACKET_MESSAGE = 1;
|
private static final int PACKET_MESSAGE = 1;
|
||||||
private static final int PACKET_PRESENCE = 2;
|
private static final int PACKET_PRESENCE = 2;
|
||||||
protected final Account account;
|
protected final Account account;
|
||||||
private final WakeLock wakeLock;
|
|
||||||
private Socket socket;
|
private Socket socket;
|
||||||
private XmlReader tagReader;
|
private XmlReader tagReader;
|
||||||
private TagWriter tagWriter = new TagWriter();
|
private TagWriter tagWriter = new TagWriter();
|
||||||
|
@ -224,7 +221,6 @@ public class XmppConnection implements Runnable {
|
||||||
public XmppConnection(final Account account, final XmppConnectionService service) {
|
public XmppConnection(final Account account, final XmppConnectionService service) {
|
||||||
this.account = account;
|
this.account = account;
|
||||||
final String tag = account.getJid().toBareJid().toPreppedString();
|
final String tag = account.getJid().toBareJid().toPreppedString();
|
||||||
this.wakeLock = service.getPowerManager().newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, tag == null ? "[empty bare jid]" : tag);
|
|
||||||
mXmppConnectionService = service;
|
mXmppConnectionService = service;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -439,14 +435,8 @@ public class XmppConnection implements Runnable {
|
||||||
} finally {
|
} finally {
|
||||||
if (!Thread.currentThread().isInterrupted()) {
|
if (!Thread.currentThread().isInterrupted()) {
|
||||||
forceCloseSocket();
|
forceCloseSocket();
|
||||||
if (wakeLock.isHeld()) {
|
|
||||||
try {
|
|
||||||
wakeLock.release();
|
|
||||||
} catch (final RuntimeException ignored) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": not force closing socket and releasing wake lock (is held=" + wakeLock.isHeld() + ") because thread was interrupted");
|
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": not force closing socket because thread was interrupted");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -461,7 +451,7 @@ public class XmppConnection implements Runnable {
|
||||||
throw new InterruptedException();
|
throw new InterruptedException();
|
||||||
}
|
}
|
||||||
this.socket = socket;
|
this.socket = socket;
|
||||||
tagReader = new XmlReader(wakeLock);
|
tagReader = new XmlReader();
|
||||||
if (tagWriter != null) {
|
if (tagWriter != null) {
|
||||||
tagWriter.forceClose();
|
tagWriter.forceClose();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue