aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/nullwire
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2009-06-10 16:19:53 +0000
committerKenny Root <kenny@the-b.org>2009-06-10 16:19:53 +0000
commit5730cd751eba90d5bb33babb41425586dbcc30b1 (patch)
tree3acbe15f10487958e96c97b2931428f944e805d6 /src/com/nullwire
parentd62e6eebae78c8d59c46517fd5cea9be6942f5ba (diff)
downloadconnectbot-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/com/nullwire')
-rw-r--r--src/com/nullwire/trace/ExceptionClickListener.java14
-rw-r--r--src/com/nullwire/trace/ExceptionHandler.java51
2 files changed, 42 insertions, 23 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();
}