diff options
author | Kenny Root <kenny@the-b.org> | 2009-06-10 16:19:53 +0000 |
---|---|---|
committer | Kenny Root <kenny@the-b.org> | 2009-06-10 16:19:53 +0000 |
commit | 5730cd751eba90d5bb33babb41425586dbcc30b1 (patch) | |
tree | 3acbe15f10487958e96c97b2931428f944e805d6 /src | |
parent | d62e6eebae78c8d59c46517fd5cea9be6942f5ba (diff) | |
download | connectbot-5730cd751eba90d5bb33babb41425586dbcc30b1.tar.gz connectbot-5730cd751eba90d5bb33babb41425586dbcc30b1.tar.bz2 connectbot-5730cd751eba90d5bb33babb41425586dbcc30b1.zip |
Improve the stack trace handler; only ask user to submit while in the host list
git-svn-id: https://connectbot.googlecode.com/svn/trunk/connectbot@278 df292f66-193f-0410-a5fc-6d59da041ff2
Diffstat (limited to 'src')
-rw-r--r-- | src/com/nullwire/trace/ExceptionClickListener.java | 14 | ||||
-rw-r--r-- | src/com/nullwire/trace/ExceptionHandler.java | 51 | ||||
-rw-r--r-- | src/org/connectbot/ConsoleActivity.java | 7 | ||||
-rw-r--r-- | src/org/connectbot/HostListActivity.java | 2 |
4 files changed, 42 insertions, 32 deletions
diff --git a/src/com/nullwire/trace/ExceptionClickListener.java b/src/com/nullwire/trace/ExceptionClickListener.java index 2c6e561..2646db1 100644 --- a/src/com/nullwire/trace/ExceptionClickListener.java +++ b/src/com/nullwire/trace/ExceptionClickListener.java @@ -3,6 +3,8 @@ */ package com.nullwire.trace; +import java.lang.ref.WeakReference; + import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; @@ -15,10 +17,10 @@ import android.util.Log; public class ExceptionClickListener implements OnClickListener { public static String TAG = "com.nullwire.trace.ExceptionClickListener"; - Context context; + WeakReference<Context> context; public ExceptionClickListener(Context context) { - this.context = context; + this.context = new WeakReference<Context>(context); } public void onClick(DialogInterface dialog, int whichButton) { @@ -27,13 +29,17 @@ public class ExceptionClickListener implements OnClickListener { Log.d(TAG, "Trying to submit stack traces"); new Thread(new Runnable() { public void run() { - ExceptionHandler.submitStackTraces(context); + ExceptionHandler.submitStackTraces(context.get()); } }).run(); dialog.dismiss(); break; case DialogInterface.BUTTON_NEGATIVE: - ExceptionHandler.removeStackTraces(context); + new Thread(new Runnable() { + public void run() { + ExceptionHandler.removeStackTraces(context.get()); + } + }).run(); dialog.dismiss(); break; default: diff --git a/src/com/nullwire/trace/ExceptionHandler.java b/src/com/nullwire/trace/ExceptionHandler.java index b73ea86..ff29724 100644 --- a/src/com/nullwire/trace/ExceptionHandler.java +++ b/src/com/nullwire/trace/ExceptionHandler.java @@ -18,28 +18,32 @@ import org.connectbot.R; import android.app.AlertDialog; import android.content.Context; -import android.content.DialogInterface; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; +import android.os.Handler; +import android.os.Message; import android.util.Log; public class ExceptionHandler { - public static String TAG = "com.nullwire.trace.ExceptionsHandler"; private static String[] stackTraceFileList = null; - private static AlertDialog submitDialog; - /** * @param context */ - public static void checkForTraces(Context context) { - if (searchForStackTraces(context).length > 0) { - Log.d(TAG, "number of stack traces: " + searchForStackTraces(context).length); - askUserToSubmitExceptions(context); - } + public static void checkForTraces(final Context context) { + new Thread(new Runnable() { + public void run() { + String[] stackTraces = searchForStackTraces(context); + if (stackTraces != null && stackTraces.length > 0) { + Log.d(TAG, "number of stack traces: " + stackTraces.length); + submissionHandler.sendMessage( + submissionHandler.obtainMessage(-1, context)); + } + } + }).start(); } /** @@ -88,6 +92,9 @@ public class ExceptionHandler { if (stackTraceFileList != null && stackTraceFileList.length > 0) return stackTraceFileList; + if (context == null) + return null; + if (G.FILES_PATH == null) getPackageInfo(context); @@ -103,24 +110,27 @@ public class ExceptionHandler { return (stackTraceFileList = dir.list(filter)); } - public static void askUserToSubmitExceptions(Context context) { - if (submitDialog == null) { - DialogInterface.OnClickListener clickListener = new ExceptionClickListener(context); - submitDialog = new AlertDialog.Builder(context) + private static Handler submissionHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + Context context = (Context) msg.obj; + ExceptionClickListener clickListener = new ExceptionClickListener(context); + new AlertDialog.Builder(context) .setMessage(R.string.exceptions_submit_message) - .setPositiveButton(android.R.string.ok, clickListener) + .setPositiveButton(android.R.string.yes, clickListener) .setNegativeButton(android.R.string.no, clickListener) - .create(); + .create().show(); } - - submitDialog.show(); - } + }; /** * Look into the files folder to see if there are any "*.stacktrace" files. * If any are present, submit them to the trace server. */ public static void submitStackTraces(Context context) { + if (context == null) + return; + try { Log.d(TAG, "Looking for exceptions in: " + G.FILES_PATH); String[] list = searchForStackTraces(context); @@ -172,6 +182,9 @@ public class ExceptionHandler { } public synchronized static void removeStackTraces(Context context) { + if (context == null) + return; + try { String[] list = searchForStackTraces(context); @@ -183,7 +196,7 @@ public class ExceptionHandler { file.delete(); } - list = null; + stackTraceFileList = null; } catch (Exception e) { e.printStackTrace(); } diff --git a/src/org/connectbot/ConsoleActivity.java b/src/org/connectbot/ConsoleActivity.java index 20673eb..059632a 100644 --- a/src/org/connectbot/ConsoleActivity.java +++ b/src/org/connectbot/ConsoleActivity.java @@ -733,13 +733,6 @@ public class ConsoleActivity extends Activity { wakelock.release(); } - @Override - public void onResume() { - super.onResume(); - - ExceptionHandler.checkForTraces(this); - } - protected void shiftLeft() { View overlay; boolean shouldAnimate = flip.getChildCount() > 1; diff --git a/src/org/connectbot/HostListActivity.java b/src/org/connectbot/HostListActivity.java index 17edd0f..571780d 100644 --- a/src/org/connectbot/HostListActivity.java +++ b/src/org/connectbot/HostListActivity.java @@ -111,8 +111,6 @@ public class HostListActivity extends ListActivity { this.hostdb = new HostDatabase(this); this.updateList(); - - ExceptionHandler.checkForTraces(this); } @Override |