Skip to content

Commit

Permalink
Off load db queries off the main ui thread
Browse files Browse the repository at this point in the history
  • Loading branch information
eyedol committed Aug 3, 2013
1 parent bcd475f commit 5ea7d21
Show file tree
Hide file tree
Showing 12 changed files with 139 additions and 48 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@
import org.addhen.smssync.navdrawer.PendingMessagesNavDrawerItem;
import org.addhen.smssync.navdrawer.SentMessagesNavDrawerItem;
import org.addhen.smssync.navdrawer.SyncUrlNavDrawerItem;
import org.addhen.smssync.tasks.ProgressTask;
import org.addhen.smssync.util.Logger;
import org.addhen.smssync.util.Objects;
import org.addhen.smssync.util.Util;
import org.addhen.smssync.views.View;

import android.app.Activity;
Expand Down Expand Up @@ -151,11 +153,9 @@ public void onCreate(Bundle savedInstanceState) {

createNavDrawer();

if (savedInstanceState == null) {
selectItem(0);
}
}

}
Util.setupStrictMode();
}

@Override
Expand Down Expand Up @@ -253,17 +253,8 @@ public void openActivityOrFragment(Intent intent) {
}

protected void createNavDrawer() {
initNavDrawer();
navDrawerAdapter.addItem(new PendingMessagesNavDrawerItem(
getString(R.string.pending_messages),
R.drawable.pending, BaseActivity.this));

navDrawerAdapter.addItem(new SentMessagesNavDrawerItem(
getString(R.string.sent_messages),
R.drawable.sent, BaseActivity.this));

navDrawerAdapter.addItem(new SyncUrlNavDrawerItem(getString(R.string.sync_url),
R.drawable.sync_url, BaseActivity.this));
navDrawerAdapter = new NavDrawerAdapter(this);
new LoadingStatusTask(this).execute((String)null);

}

Expand Down Expand Up @@ -295,7 +286,7 @@ protected void selectItem(int position) {
}

private void initNavDrawer() {
navDrawerAdapter = new NavDrawerAdapter(this);

listView.setOnItemClickListener(new NavDrawerItemClickListener());
listView.setAdapter(navDrawerAdapter);

Expand Down Expand Up @@ -344,6 +335,33 @@ public void onConfigurationChanged(Configuration newConfig) {
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);
}
}

protected EditText findEditTextById(int id) {
return (EditText) findViewById(id);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ public void onCreate(Bundle savedInstanceState) {
@Override
protected void onResume() {
super.onResume();
// new LoadingTask(this).execute((String)null);

}

@SuppressWarnings("unchecked")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,15 @@

package org.addhen.smssync.adapters;

import com.actionbarsherlock.app.SherlockFragmentActivity;

import static org.addhen.smssync.models.NavDrawerItem.NO_ICON_RES_ID;

import org.addhen.smssync.R;
import org.addhen.smssync.navdrawer.BaseNavDrawerItem;
import org.addhen.smssync.navdrawer.PendingMessagesNavDrawerItem;
import org.addhen.smssync.navdrawer.SentMessagesNavDrawerItem;
import org.addhen.smssync.navdrawer.SyncUrlNavDrawerItem;

import android.content.Context;
import android.view.View;
Expand All @@ -35,11 +40,14 @@
*/
public class NavDrawerAdapter extends BaseListAdapter<BaseNavDrawerItem> {

private SherlockFragmentActivity mActivity;

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

@Override
Expand All @@ -63,7 +71,6 @@ public View getView(int position, View convertView, ViewGroup parent) {
}

// set counter
getItem(position).setCounter();
if (getItem(position).getCounter() > 0) {
widget.counter.setText(String.valueOf(getItem(position).getCounter()));
}
Expand All @@ -77,11 +84,30 @@ public View getView(int position, View convertView, ViewGroup parent) {
*/
@Override
public void refresh() {
// TODO Auto-generated method stub
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 {

TextView title;

TextView counter;

public Widgets(View convertView) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.actionbarsherlock.app.SherlockListFragment;
Expand Down Expand Up @@ -116,15 +117,16 @@ public void onActivityCreated(Bundle savedInstanceState) {

if (listViewId != 0) {
listView = getListView();

view = Objects.createInstance(viewClass, Activity.class,
getSherlockActivity());
adapter = Objects.createInstance(adapterClass, Context.class,
getSherlockActivity());

listView.setAdapter(adapter);
listView.setFocusable(true);
listView.setFocusableInTouchMode(true);

new LoadingTask(getActivity()).execute((String)null);
}
}

Expand All @@ -147,6 +149,11 @@ public android.view.View onCreateView(LayoutInflater inflater,
return root;
}

@Override
public void onResume() {
super.onResume();
}

/**
* Called after ListAdapter has been loaded
*
Expand All @@ -173,7 +180,7 @@ public void onNothingSelected(AdapterView<?> adapterView) {
*/
protected class LoadingTask extends ProgressTask {
public LoadingTask(Activity activity) {
super(activity, R.string.loading);
super(activity);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
import android.os.Bundle;
import android.os.Handler;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.ListView;

import com.actionbarsherlock.view.MenuItem;
Expand Down Expand Up @@ -111,7 +112,7 @@ public void onActivityCreated(Bundle savedInstanceState) {
}
}
view.sync.setOnClickListener(this);
Util.setupStrictMode();
view.emptyView.setVisibility(View.GONE);
MainApplication.bus.register(this);
}

Expand All @@ -133,7 +134,7 @@ public void onResume() {
getActivity().registerReceiver(smsDeliveredReceiver,
new IntentFilter(ServicesConstants.DELIVERED));
idle();
mHandler.post(mUpdateListView);

}

@Override
Expand Down Expand Up @@ -485,8 +486,11 @@ public void run() {
*/
public void showMessages() {
log("showMessages()");

if (adapter != null) {
view.listLoadingProgress.setVisibility(View.VISIBLE);
adapter.refresh();
view.listLoadingProgress.setVisibility(View.GONE);
}
}

Expand Down Expand Up @@ -594,7 +598,7 @@ private void setButtonsToDefault() {

@Override
protected void onLoaded(boolean success) {
// TODO Auto-generated method stub
view.listLoadingProgress.setVisibility(View.GONE);
}

// Thread class to handle synchronous execution of message importation task.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,8 @@ public void onResume() {
log("OnResume is called");
getActivity().registerReceiver(broadcastReceiver,
new IntentFilter(ServicesConstants.AUTO_SYNC_ACTION));
mHandler.post(mDisplayMessages);
//mHandler.post(mDisplayMessages);

MainApplication.bus.register(this);

}
Expand Down
Loading

0 comments on commit 5ea7d21

Please sign in to comment.