我正在打开一个Twitter流来获得不断的推文流,但是当我尝试关闭它时,我得到以下系统错误。调用stopStreaming()方法时会发生错误。我正在使用Twitter twitter4j来传输状态/过滤器。
public class FilterTweetsManager implements StatusListener//, Runnable
{
//
public void start(String[] keywords)
{
FilterQuery fq = new FilterQuery();
fq.track(keywords);
twitterStream_.addListener(this);
twitterStream_.filter(fq);
}
public void stopStreaming()
{
Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
twitterStream_.cleanUp(); // shutdown internal stream consuming thread
twitterStream_.shutdown(); // Shuts down internal dispatcher thread shared by all TwitterStream instances.
}
});
}
@Override
public void onStatus(twitter4j.Status status) {
Log.d(TAG, "onStatus " + status.getText());
}
//... rest of the StatusListener methods
}
收到的错误是:
W/System.err: java.lang.IllegalStateException: Unbalanced enter/exit
W/System.err: at com.android.okhttp.okio.AsyncTimeout.enter(AsyncTimeout.java:62)
W/System.err: at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:209)
W/System.err: at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:306)
W/System.err: at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:300)
W/System.err: at com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:196)
W/System.err: at com.android.okhttp.internal.http.Http1xStream$ChunkedSource.readChunkSize(Http1xStream.java:451)
W/System.err: at com.android.okhttp.internal.http.Http1xStream$ChunkedSource.read(Http1xStream.java:435)
W/System.err: at com.android.okhttp.internal.Util.skipAll(Util.java:159)
W/System.err: at com.android.okhttp.internal.Util.discard(Util.java:141)
W/System.err: at com.android.okhttp.internal.http.Http1xStream$ChunkedSource.close(Http1xStream.java:472)
W/System.err: at com.android.okhttp.okio.RealBufferedSource.close(RealBufferedSource.java:396)
W/System.err: at com.android.okhttp.okio.RealBufferedSource$1.close(RealBufferedSource.java:384)
W/System.err: at java.util.zip.InflaterInputStream.close(InflaterInputStream.java:239)
W/System.err: at java.util.zip.GZIPInputStream.close(GZIPInputStream.java:137)
W/System.err: at twitter4j.StatusStreamBase.close(StatusStreamBase.java:335)
W/System.err: at twitter4j.TwitterStreamImpl$TwitterStreamConsumer.close(TwitterStreamImpl.java:685)
W/System.err: at twitter4j.TwitterStreamImpl.cleanUp(TwitterStreamImpl.java:386)
W/System.err: at cat.jorda.tweetfilter.FilterTweetsManager$1.run(FilterTweetsManager.java:63)
W/System.err: at android.os.Handler.handleCallback(Handler.java:789)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:98)
W/System.err: at android.os.Looper.loop(Looper.java:164)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6541)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
W/TwitterStreamImpl: Unbalanced enter/exit
W/TwitterStreamImpl: Inflater has been closed