Concurrent ticker fetching
This commit is contained in:
parent
daebb67a56
commit
8fbceb083c
|
|
@ -21,6 +21,7 @@ import com.example.dcav2gui.R;
|
|||
import com.example.dcav2gui.TickerTracker;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
|
|
@ -254,13 +255,46 @@ public class HomeFragment extends Fragment {
|
|||
String ticker2 = "ETHUSDT";
|
||||
String ticker3 = "USDTARS";
|
||||
|
||||
TickerTracker.PriceChangeData priceData = TickerTracker.getPriceChanges(ticker1);
|
||||
TickerTracker.PriceChangeData priceData2 = TickerTracker.getPriceChanges(ticker2);
|
||||
TickerTracker.PriceChangeData priceData3 = TickerTracker.getPriceChanges(ticker3);
|
||||
// Fetch price data in background using CompletableFuture
|
||||
CompletableFuture<TickerTracker.PriceChangeData> future1 = CompletableFuture.supplyAsync(() -> {
|
||||
try {
|
||||
return TickerTracker.getPriceChanges(ticker1);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
CompletableFuture<TickerTracker.PriceChangeData> future2 = CompletableFuture.supplyAsync(() -> {
|
||||
try {
|
||||
return TickerTracker.getPriceChanges(ticker2);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
CompletableFuture<TickerTracker.PriceChangeData> future3 = CompletableFuture.supplyAsync(() -> {
|
||||
try {
|
||||
return TickerTracker.getPriceChanges(ticker3);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
// Wait for all futures to complete
|
||||
CompletableFuture<Void> allFutures = CompletableFuture.allOf(future1, future2, future3);
|
||||
|
||||
|
||||
|
||||
// Update UI on the main thread
|
||||
requireActivity().runOnUiThread(() -> {
|
||||
try {
|
||||
TickerTracker.PriceChangeData priceData = future1.get();
|
||||
TickerTracker.PriceChangeData priceData2 = future2.get();
|
||||
TickerTracker.PriceChangeData priceData3 = future3.get();;
|
||||
|
||||
pricePair1.setText(String.format(Locale.ROOT,"%.2f", priceData.getCurrentPrice()));
|
||||
setPercentageColor(pricePair124hPercentage,priceData.getPriceChangePercent24h());
|
||||
setPercentageColor(pricePair17dPercentage,priceData.getPriceChangePercent7d());
|
||||
|
|
@ -280,7 +314,7 @@ public class HomeFragment extends Fragment {
|
|||
Toast.makeText(getContext(), "Error updating UI", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
} catch (IOException e) {
|
||||
} catch (Exception e) {
|
||||
requireActivity().runOnUiThread(() ->
|
||||
Toast.makeText(getContext(), "Failed to fetch price data. Check your connection.", Toast.LENGTH_SHORT).show()
|
||||
);
|
||||
|
|
|
|||
Loading…
Reference in New Issue