В мобильном приложении настраиваются параметры возобновления загрузки ресурса с сохранением состояния:
количество повторений загрузки ресурса;
интервал повторений в секундах.
Если во время загрузки ресурса произошла ошибка или разрыв соединения с сервером мобильной платформы, мобильное приложение будет выполнять повторные попытки запроса ресурса.
Для получения табличных данных кэша по параметрам с сервера мобильной платформы с загрузкой в базу данных создайте приложение «TableStreamActivity», в котором используется метод tableStream, реализованный в модуле RequestAPI.
Примечание. Приложение аналогично приложению «TableStreamSapActivity».
Перед созданием приложения убедитесь, что доступен ресурс в источнике данных PostgreSQL. Таблица содержит информацию о фруктах и состоит из трёх колонок: «id», «name», «description».
Приложение «TableStreamActivity» состоит из одного экрана и кнопки:
«TABLESTREAM». Получение данных из источника данных PostgreSQL.
Для просмотра результата работы приложения используйте интерактивный пример:
Нажмите кнопку «TABLESTREAM».
public class TableStreamActivity extends AppCompatActivity {
private static final String MY_URL = "http://testmasterfmp.fsight.cloud/";
private static final VersionAPI MY_VERSION_API = VersionAPI.V_1;
private static final String MY_ENVIRONMENT = "Leonid_environment";
private static final String MY_PROJECT = "Leonid_project";
private static final String MY_VERSION = "v1";
private static final String MY_LOGIN = "Leonid";
private static final String MY_PASSWORD = "123123";
private static final String MY_RESOURCE = "Leonid_postgreSQL";
private static final String TAG = "TableStreamActivity";
private HyperHive hyperHive;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_table_stream);
textView = findViewById(R.id.text_view_table_stream);
Handler uiHandler = new Handler();
hyperHive = new HyperHiveState(getApplicationContext())
.setHostWithSchema(MY_URL)
.setApiVersion(MY_VERSION_API)
.setEnvironmentSlug(MY_ENVIRONMENT)
.setProjectSlug(MY_PROJECT)
.setVersionProject(MY_VERSION)
.setHandler(uiHandler)
.buildHyperHive();
authentication();
}
public void authentication() {
boolean status = hyperHive.authAPI.auth(MY_LOGIN, MY_PASSWORD, true).execute().isOk();
showStatus(status);
}
public void tableStream(View view) {
// Создадим параметры для запроса TableStreamCallParams
TableStreamCallParams tableStreamCallParams = new TableStreamCallParams();
String params = "{\"upsert_rows\": null ,\"delete_ids\": null}"; // не обновляем и не удаляем строки
tableStreamCallParams.setData(params);
tableStreamCallParams.setRetryCount(10);
tableStreamCallParams.setRetryIntervalSec(1);
// Отправим запрос tableStream
hyperHive.requestAPI.tableStream(MY_RESOURCE, tableStreamCallParams).execute(); // передадим наименование таблицы
// Получим таблицу из источника данных
TableStreamStatus queryRequest = hyperHive.databaseAPI.getTablesName(MY_RESOURCE, tableStreamCallParams.getData(), TableStreamStatus.class).execute();
// queryParams...statements содержит список SELECT запросов для соответствующих параметров params
// В данном примере один возможный вариант
String response = hyperHive.databaseAPI.query(queryRequest.request.source.database.statements[0], StatusSelectTable.class).execute().toString();
textView.setText(response);
}
public void showStatus(boolean status) {
Log.d(TAG, "auth: " + status);
Toast.makeText(this, "auth: " + status, Toast.LENGTH_LONG).show();
}
}
class TableStreamStatus extends BaseStatus {
@Expose
@SerializedName("request")
public Request request;
}
class Request {
@Expose
@SerializedName("source")
public Source source;
}
class Source {
@Expose
@SerializedName("database")
public Database database;
}
class Database {
@Expose
@SerializedName("name")
public String name;
@Expose
@SerializedName("statements")
public String[] statements;
}
См. также:
Примеры использования Android-фреймворка | Примеры работы с ресурсами