mirror of
https://github.com/ClaytonWWilson/Listify.git
synced 2025-12-16 10:48:46 +00:00
Add threads in awaited for loops. Remove new threads from Requestor.getObject calls
This commit is contained in:
parent
6b30476ccd
commit
c07599ecc6
@ -88,22 +88,50 @@ public class ItemDetails extends AppCompatActivity implements ListPickerDialogFr
|
||||
|
||||
Requestor requestor = new Requestor(am, configs.getProperty("apiKey"));
|
||||
SynchronousReceiver<Integer[]> listIdsReceiver = new SynchronousReceiver<>();
|
||||
SynchronousReceiver<List> listReceiver = new SynchronousReceiver<>();
|
||||
requestor.getListOfIds(List.class, listIdsReceiver, listIdsReceiver);
|
||||
|
||||
Thread t = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Integer[] listIds = null;
|
||||
try {
|
||||
Integer[] listIds = listIdsReceiver.await();
|
||||
for (int i = 0; i < listIds.length; i++) {
|
||||
requestor.getObject(Integer.toString(listIds[i]), List.class, listReceiver, listReceiver);
|
||||
shoppingLists.add(listReceiver.await());
|
||||
}
|
||||
listIds = listIdsReceiver.await();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// Create threads and add them to a list
|
||||
Thread[] threads = new Thread[listIds.length];
|
||||
List[] results = new List[listIds.length];
|
||||
for (int i = 0; i < listIds.length; i++) {
|
||||
SynchronousReceiver<List> listReceiver = new SynchronousReceiver<>();
|
||||
requestor.getObject(Integer.toString(listIds[i]), List.class, listReceiver, listReceiver);
|
||||
int finalI = i;
|
||||
Thread l = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
results[finalI] = listReceiver.await();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
threads[i] = l;
|
||||
l.start();
|
||||
}
|
||||
|
||||
// Wait for each thread to finish and add results to shoppingLists
|
||||
for (int i = 0; i < threads.length; i++) {
|
||||
try {
|
||||
threads[i].join();
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
shoppingLists.add(results[i]);
|
||||
}
|
||||
|
||||
|
||||
loadingDialog.cancel();
|
||||
ListPickerDialogFragment listPickerDialog = new ListPickerDialogFragment(shoppingLists);
|
||||
listPickerDialog.show(getSupportFragmentManager(), "User Lists");
|
||||
|
||||
@ -108,14 +108,7 @@ public class SearchResults extends AppCompatActivity implements SortDialogFragme
|
||||
// Clear old search results from the view
|
||||
resultsProductListSorted.clear();
|
||||
searchResultsListAdapter.notifyDataSetChanged();
|
||||
|
||||
Thread t = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
doSearch(query);
|
||||
}
|
||||
});
|
||||
t.start();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@ -66,13 +66,7 @@ public class ListsFragment extends Fragment implements CreateListDialogFragment.
|
||||
SynchronousReceiver<Integer[]> listIdsReceiver = new SynchronousReceiver<>();
|
||||
|
||||
final Requestor.Receiver<Integer[]> recv = this;
|
||||
Thread t = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
requestor.getListOfIds(List.class, recv, null);
|
||||
}
|
||||
});
|
||||
t.start();
|
||||
|
||||
|
||||
FloatingActionButton fab = (FloatingActionButton) root.findViewById(R.id.new_list_fab);
|
||||
@ -144,17 +138,37 @@ public class ListsFragment extends Fragment implements CreateListDialogFragment.
|
||||
|
||||
@Override
|
||||
public void acceptDelivery(Object delivered) {
|
||||
SynchronousReceiver<List> listReceiver = new SynchronousReceiver<>();
|
||||
Integer[] listIds = (Integer[]) delivered;
|
||||
try {
|
||||
// Integer[] listIds = listIdsReceiver.await();
|
||||
// Create threads and add them to a list
|
||||
Thread[] threads = new Thread[listIds.length];
|
||||
List[] results = new List[listIds.length];
|
||||
for (int i = 0; i < listIds.length; i++) {
|
||||
SynchronousReceiver<List> listReceiver = new SynchronousReceiver<>();
|
||||
requestor.getObject(Integer.toString(listIds[i]), List.class, listReceiver, listReceiver);
|
||||
shoppingLists.add(listReceiver.await());
|
||||
}
|
||||
int finalI = i;
|
||||
Thread t = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
results[finalI] = listReceiver.await();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
threads[i] = t;
|
||||
t.start();
|
||||
}
|
||||
|
||||
// Wait for each thread to finish and add results to shoppingLists
|
||||
for (int i = 0; i < threads.length; i++) {
|
||||
try {
|
||||
threads[i].join();
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
shoppingLists.add(results[i]);
|
||||
}
|
||||
|
||||
// Set adapter and display this users lists
|
||||
displayShoppingListsAdapter = new DisplayShoppingListsAdapter(getActivity(), shoppingLists);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user