Fix thread issue

This commit is contained in:
Sylvain Berfini 2012-06-22 16:37:19 +02:00
parent af3d82ae8d
commit f4da9df32f

View file

@ -57,6 +57,7 @@ public class ContactsFragment extends Fragment implements OnClickListener, OnIte
private int lastKnownPosition;
private Cursor cursor;
private List<Contact> contacts;
private Thread contactsHandler;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
@ -111,16 +112,17 @@ public class ContactsFragment extends Fragment implements OnClickListener, OnIte
super.onCreate(savedInstanceState);
cursor = Compatibility.getContactsCursor(getActivity().getContentResolver());
contacts = new ArrayList<Contact>();
new Thread(new Runnable() {
contactsHandler = new Thread(new Runnable() {
@Override
public void run() {
contacts = new ArrayList<Contact>();
for (int i = 0; i < cursor.getCount(); i++) {
Contact contact = getContact(i);
contacts.add(contact);
}
}
}).start();
});
contactsHandler.start();
}
@Override
@ -138,7 +140,14 @@ public class ContactsFragment extends Fragment implements OnClickListener, OnIte
contactsList.setSelectionFromTop(lastKnownPosition, 0);
}
@Override
public void onPause() {
contactsHandler.interrupt();
super.onPause();
}
private Contact getContact(int position) {
try {
cursor.moveToFirst();
boolean success = cursor.move(position);
if (!success)
@ -160,6 +169,10 @@ public class ContactsFragment extends Fragment implements OnClickListener, OnIte
contact.setNumerosOrAddresses(Compatibility.extractContactNumbersAndAddresses(contact.getID(), getActivity().getContentResolver()));
return contact;
} catch (Exception e) {
}
return null;
}
class ContactsListAdapter extends BaseAdapter implements SectionIndexer {