I am using twitter4j to connect to Stream API.
I understand that from this post, Change Twitter stream filter keywords without re-opening stream, there is no way to
You can do this by simply calling Filter(query)
again, no need to call cleanUp()
as calling filter(query)
does this for you. Here's how I do this, and there is no need to stop/restart the stream !
private TwitterStream twitterStream;
private void filterTwitterStream() {
if (conditionToStopStreaming) {
if (null != twitterStream) {
twitterStream.shutdown();
twitterStream = null;
}
} else {
if (twitterStream == null) {
twitterStream = new TwitterStreamFactory(getConfiguration()).getInstance();
twitterStream.addListener(getListener());
}
FilterQuery qry = new FilterQuery();
String[] keywords = {......}
qry.track(keywords);
twitterStream.filter(qry);
}
}
Where getConfiguration()
returns my Configuration
object and getListener()
returns my defined StatusListener()
object
You need to cleanUp() the stream first and then open a new stream with filter(FilterQuery) method to change track terms.