Передача массива данных типа String в другие Activity
У меня есть 2-а Activity CovidCountryDetail и MapFragment в которых есть метод парсинга данных он занимает 5-6 секунд и после этого отображает данные на Activity меня не устраивает то что оно так долго парсить потому я решил создать загрузочный экран перед запуском приложения который будет висеть где-то 5-6 секунд и за это время парсить данные (то есть перенести метод из тех двух Activity на этот) после завершения парсинга передавать их в эти Activity (CovidCountryDetail и MapFragment). Парсинг записивается в одномерный массив resultRegions типа String. Как мне передать их в мои 2-а Activity? Intent не подойдет так как там нужно вызывать Activity в которое хочешь передать данные, а мне нужно просто передать данные в Activity CovidCountryDetail и MapFragment чтобы у них в переменной resultRegions уже были данные переданные мной с Activity загрузочного экрана. Как мне это сделать?
Сам загрузочный экран:
public class SplashScreen extends Activity {
private final int TIME_TO_OFF = 5000;
private Document doc;
private Thread secondThread;
private Runnable runnable;
volatile String[] resultRegions;
private static final String TAG = com.modus.trackcovid19.ui.country.CountryFragment.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splashscreen);
initThread();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent main = new Intent(SplashScreen.this, MainActivity.class);
SplashScreen.this.startActivity(main);
SplashScreen.this.finish();
}
}, TIME_TO_OFF);
}
private void initThread() {
runnable = new Runnable() {
@Override
public void run() {
getWeb();
}
};
secondThread = new Thread(runnable);
secondThread.start();
}
private String getRegionName(String name) throws IOException {
if (name.equals("Kiev")) {
return "Kiev,50.4547,30.5238";
}
Geocoder geocoder1 = new Geocoder(this, Locale.US);
List<Address> regionSearch = geocoder1.getFromLocationName(name, 1);
Address address = regionSearch.get(0);
List<Address> regionSearch2 = geocoder1.getFromLocation(address.getLatitude(), address.getLongitude(), 1);
Address address1 = regionSearch2.get(0);
Log.d(TAG, "Region " + address1.getAdminArea() + "," + address1.getLatitude() + "," + address1.getLongitude());
return address1.getAdminArea() + "," + address1.getLatitude() + "," + address1.getLongitude();
}
private void getWeb() {
try {
String url = "https://en.wikipedia.org/wiki/COVID-19_pandemic_in_Ukraine";
doc = Jsoup.connect(url).get();
Elements table = doc.getElementsByTag("tbody");
Element myTable = table.get(2);
Elements rowsTable = myTable.children();
rowsTable.remove(rowsTable.size() - 1);
rowsTable.remove(0);
resultRegions = new String[myTable.childrenSize() - 2];
for (int i = 1; i < myTable.childrenSize() - 1; i++) {
String[] result = getRegionName(myTable.children().get(i).child(0).text()).split(",");
resultRegions[i - 1] = result[0] + "," + myTable.children().get(i).child(1).text().replaceAll(",", "") + "," + myTable.children().get(i).child(2).text() + "," + myTable.children().get(i).child(3).text() + "," + result[1] + "," + result[2];
Log.d(TAG, "Array: " + resultRegions[i - 1]);
}
//Здесь хочу передавать resultRegions в другие Activity
Log.d(TAG, "Array length: " + resultRegions.length);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
}