You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.3 KiB
89 lines
2.3 KiB
package ru.defend.defdevteam.tstu;
|
|
|
|
import android.app.Activity;
|
|
import android.widget.TextView;
|
|
|
|
/**
|
|
* Created by thedefend on 29.11.16.
|
|
*/
|
|
|
|
public class FeedController {
|
|
|
|
FeedReader feedReader;
|
|
FeedUpdater feedUpdater;
|
|
String newsFeed;
|
|
int updateRate; //in minutes
|
|
private WebActivity activity;
|
|
|
|
public FeedController(WebActivity activity, int updateRate) {
|
|
this(activity, updateRate, "http://press.tstu.ru/?format=feed");
|
|
}
|
|
|
|
public FeedController(WebActivity activity, int updateRate, String rssUrl) {
|
|
feedReader = new FeedReader(this, rssUrl);
|
|
feedUpdater = new FeedUpdater();
|
|
this.activity = activity;
|
|
this.updateRate = updateRate;
|
|
feedUpdater.start();
|
|
}
|
|
|
|
private void startFeedReader() {
|
|
switch (feedReader.getThreadState()) {
|
|
case THREAD_FAIL:
|
|
feedReader.start();
|
|
break;
|
|
case THREAD_NULL:
|
|
feedReader.start();
|
|
break;
|
|
}
|
|
}
|
|
|
|
private boolean checkFeedReader() throws Exception{
|
|
switch (feedReader.getThreadState()) {
|
|
case THREAD_COMPLETE:
|
|
return true;
|
|
case THREAD_NULL:
|
|
return false;
|
|
default:
|
|
throw new Exception("Failed to get rss source string from FeedReader class");
|
|
}
|
|
}
|
|
|
|
public void feedUpdateAction(final String result) {
|
|
activity.runOnUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
activity.newsTextView.setText(result);
|
|
}
|
|
});
|
|
}
|
|
|
|
private class FeedUpdater extends Thread {
|
|
@Override
|
|
public void run() {
|
|
startFeedReader();
|
|
try {
|
|
//TODO: вернуть к норме updateRate*60*1000
|
|
sleep(updateRate*60);
|
|
} catch (InterruptedException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public FeedUpdater() {
|
|
this.start();
|
|
}
|
|
}
|
|
|
|
public String getRssString() throws Exception{
|
|
if(checkFeedReader()) {
|
|
newsFeed = feedReader.getResult();
|
|
return newsFeed;
|
|
}
|
|
throw new Exception("Feed Reader returned empty string");
|
|
}
|
|
|
|
interface FeedCallback{
|
|
void Callback();
|
|
}
|
|
}
|
|
|