Skip to content

Commit

Permalink
Major optimization to background services and ui interactions
Browse files Browse the repository at this point in the history
  • Loading branch information
eyedol committed Aug 4, 2013
1 parent e7a3797 commit c652796
Show file tree
Hide file tree
Showing 13 changed files with 249 additions and 295 deletions.
159 changes: 98 additions & 61 deletions smssync/src/main/java/org/addhen/smssync/activities/BaseActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;

import java.util.ArrayList;
import java.util.List;

/**
* BaseActivity Add shared functionality that exists between all Activities
*/
Expand All @@ -75,6 +78,13 @@ public abstract class BaseActivity<V extends View> extends SherlockFragmentActiv
*/
protected final Class<V> viewClass;

protected final int drawerLayoutId;

/**
* ListView resource id
*/
protected final int listViewId;

/**
* View
*/
Expand All @@ -86,27 +96,21 @@ public abstract class BaseActivity<V extends View> extends SherlockFragmentActiv

protected ActionBarDrawerToggle drawerToggle;

protected final int drawerLayoutId;

protected DrawerLayout drawerLayout;

protected ListView listView;

/**
* ListView resource id
*/
protected final int listViewId;

/**
* BaseActivity
*
* @param view View class
* @param layout layout resource id
* @param menu menu resource id
*
* @param view View class
* @param layout layout resource id
* @param menu menu resource id
* @param drawerLayoutId resource id for the drawerLayout
* @param listViewId the resource id for the list view
* @param listViewId the resource id for the list view
*/
protected BaseActivity(Class<V> view, int layout, int menu, int drawerLayoutId, int listViewId) {
protected BaseActivity(Class<V> view, int layout, int menu, int drawerLayoutId,
int listViewId) {

this.viewClass = view;
this.layout = layout;
Expand All @@ -117,10 +121,10 @@ protected BaseActivity(Class<V> view, int layout, int menu, int drawerLayoutId,

/**
* BaseActivity
*
* @param view View class
*
* @param view View class
* @param layout layout resource id
* @param menu menu resource id
* @param menu menu resource id
*/
protected BaseActivity(Class<V> view, int layout, int menu) {
this(view, layout, menu, 0, 0);
Expand All @@ -136,11 +140,13 @@ public void onCreate(Bundle savedInstanceState) {
setContentView(layout);
}

if (drawerLayoutId != 0)
if (drawerLayoutId != 0) {
drawerLayout = (DrawerLayout) findViewById(drawerLayoutId);
}

if (listViewId != 0)
if (listViewId != 0) {
listView = (ListView) findViewById(listViewId);
}

view = Objects.createInstance(viewClass, Activity.class, this);

Expand Down Expand Up @@ -233,7 +239,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
} else {
drawerLayout.openDrawer(listView);
}

} else {
finish();
}
Expand All @@ -254,18 +260,7 @@ public void openActivityOrFragment(Intent intent) {

protected void createNavDrawer() {
navDrawerAdapter = new NavDrawerAdapter(this);
new LoadingStatusTask(this).execute((String)null);

}

private class NavDrawerItemClickListener implements ListView.OnItemClickListener {

@Override
public void onItemClick(AdapterView<?> parent, android.view.View view, int position, long id) {
selectItem(position);
view.getFocusables(position);
view.setSelected(true);
}
new NavDrawerItemTask(this).execute((String) null);

}

Expand Down Expand Up @@ -315,50 +310,25 @@ public void onDrawerOpened(android.view.View drawerView) {
}

/**
* When using the ActionBarDrawerToggle, you must call it during
* onPostCreate() and onConfigurationChanged()...
* When using the ActionBarDrawerToggle, you must call it during onPostCreate() and
* onConfigurationChanged()...
*/

@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
if (drawerToggle != null)
if (drawerToggle != null) {
drawerToggle.syncState();
}
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Pass any configuration change to the drawer toggls
if (drawerToggle != null)
if (drawerToggle != null) {
drawerToggle.onConfigurationChanged(newConfig);
}

private class LoadingStatusTask extends ProgressTask {

protected LoadingStatusTask(Activity activity) {
super(activity);
}

@Override
protected void onPreExecute() {
super.onPreExecute();
dialog.cancel();
}

@Override
protected Boolean doInBackground(String... strings) {
// load all checked syncurl
navDrawerAdapter.refresh();
return true;
}

@Override
protected void onPostExecute(Boolean success) {
super.onPostExecute(success);
initNavDrawer();
selectItem(0);
}
}

Expand Down Expand Up @@ -438,4 +408,71 @@ protected void toastShort(CharSequence message) {
Toast.makeText(this, message.toString(), Toast.LENGTH_SHORT).show();
}

private class NavDrawerItemClickListener implements ListView.OnItemClickListener {

@Override
public void onItemClick(AdapterView<?> parent, android.view.View view, int position,
long id) {
selectItem(position);
view.getFocusables(position);
view.setSelected(true);
}

}

private class NavDrawerItemTask extends ProgressTask {

PendingMessagesNavDrawerItem pendingMessagesNavDrawerItem;

SentMessagesNavDrawerItem sentMessagesNavDrawerItem;

SyncUrlNavDrawerItem syncUrlNavDrawerItem;

List<BaseNavDrawerItem> navDrawerItem;

protected NavDrawerItemTask(Activity activity) {
super(activity);
pendingMessagesNavDrawerItem
= new PendingMessagesNavDrawerItem(
getString(R.string.pending_messages),
R.drawable.pending, BaseActivity.this);

sentMessagesNavDrawerItem = new SentMessagesNavDrawerItem(
getString(R.string.sent_messages),
R.drawable.sent, BaseActivity.this);
syncUrlNavDrawerItem = new SyncUrlNavDrawerItem(getString(
R.string.sync_url),
R.drawable.sync_url, BaseActivity.this);
navDrawerItem = new ArrayList<BaseNavDrawerItem>();

}

@Override
protected void onPreExecute() {
super.onPreExecute();
dialog.cancel();
}

@Override
protected Boolean doInBackground(String... strings) {
// load all checked syncurl
sentMessagesNavDrawerItem.setCounter();
pendingMessagesNavDrawerItem.setCounter();
syncUrlNavDrawerItem.setCounter();
navDrawerItem.add(pendingMessagesNavDrawerItem);
navDrawerItem.add(sentMessagesNavDrawerItem);
navDrawerItem.add(syncUrlNavDrawerItem);

return true;
}

@Override
protected void onPostExecute(Boolean success) {
super.onPostExecute(success);
navDrawerAdapter.setItems(navDrawerItem);
initNavDrawer();
selectItem(0);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,12 @@
*/
public class NavDrawerAdapter extends BaseListAdapter<BaseNavDrawerItem> {

private SherlockFragmentActivity mActivity;

/**
* @param activity
* @param context
*/
public NavDrawerAdapter(SherlockFragmentActivity activity) {
super(activity);
this.mActivity = activity;
public NavDrawerAdapter(Context context) {
super(context);
}

@Override
Expand Down Expand Up @@ -84,24 +82,6 @@ public View getView(int position, View convertView, ViewGroup parent) {
*/
@Override
public void refresh() {
PendingMessagesNavDrawerItem pendingMessagesNavDrawerItem
= new PendingMessagesNavDrawerItem(
context.getString(R.string.pending_messages),
R.drawable.pending, mActivity);
pendingMessagesNavDrawerItem.setCounter();
addItem(pendingMessagesNavDrawerItem);

SentMessagesNavDrawerItem sentMessagesNavDrawerItem = new SentMessagesNavDrawerItem(
context.getString(R.string.sent_messages),
R.drawable.sent, mActivity);
sentMessagesNavDrawerItem.setCounter();
addItem(sentMessagesNavDrawerItem);

SyncUrlNavDrawerItem syncUrlNavDrawerItem = new SyncUrlNavDrawerItem(context.getString(
R.string.sync_url),
R.drawable.sync_url, mActivity);
syncUrlNavDrawerItem.setCounter();
addItem(syncUrlNavDrawerItem);
}

private class Widgets {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
package org.addhen.smssync.database;

import org.addhen.smssync.models.SyncUrl;
import org.addhen.smssync.util.Logger;
import org.addhen.smssync.util.Util;

import android.content.ContentValues;
Expand Down Expand Up @@ -48,11 +49,12 @@ public SyncUrlContentProvider(SQLiteDatabase db) {

@Override
public List<SyncUrl> fetchSyncUrl() {
mListSyncUrl = new ArrayList<SyncUrl>();

try {
cursor = super.query(TABLE, COLUMNS, null, null, ID);
if (cursor != null) {
cursor = super.query(TABLE, COLUMNS, null, null, ID);

mListSyncUrl = new ArrayList<SyncUrl>();
while (cursor.moveToNext()) {
SyncUrl syncUrl = cursorToEntity(cursor);
mListSyncUrl.add(syncUrl);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,53 +67,6 @@ public class PendingMessages

private static final String STATE_CHECKED = "org.addhen.smssync.fragments.STATE_CHECKED";

/**
* Delete individual messages 0 - Successfully deleted. 1 - There is nothing to be deleted.
*/
final Runnable mDeleteMessagesById = new Runnable() {
public void run() {
log("mDeleteMessagesById()");
getActivity().setProgressBarIndeterminateVisibility(true);
boolean result = false;

int deleted = 0;

if (adapter.getCount() == 0) {
deleted = 1;
} else {
log("deletebyId position: " + mSelectedItemsPositions.size());
for (Integer position : mSelectedItemsPositions) {
model.deleteMessagesByUuid(adapter.getItem(position).getUuid());
}
result = true;
}

try {
if (deleted == 1) {
toastLong(R.string.no_messages_to_delete);
} else {

if (result) {
toastLong(R.string.messages_deleted);

} else {
toastLong(R.string.messages_deleted_failed);
}
}

// destory the action mode dialog
multichoiceActionModeListener.activeMode.finish();
multichoiceActionModeListener.getSelectedItemPositions().clear();
getActivity().setProgressBarIndeterminateVisibility(false);
refreshListView();
} catch (Exception e) {
return;
}
}
};

private final Handler mHandler;

private Intent syncPendingMessagesServiceIntent;

private Message model;
Expand Down Expand Up @@ -187,7 +140,6 @@ public PendingMessages() {
R.layout.list_messages, R.menu.pending_messages_menu,
android.R.id.list);
log("PendingMessages()");
mHandler = new Handler();
model = new Message();
}

Expand Down Expand Up @@ -688,8 +640,10 @@ protected void onPostExecute(Boolean success) {
}
}
adapter.setItems(model.getMessageList());
multichoiceActionModeListener.activeMode.finish();
multichoiceActionModeListener.getSelectedItemPositions().clear();
if (multichoiceActionModeListener.activeMode != null) {
multichoiceActionModeListener.activeMode.finish();
multichoiceActionModeListener.getSelectedItemPositions().clear();
}
listView.setAdapter(adapter);
}
}
Expand Down

0 comments on commit c652796

Please sign in to comment.