aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/nullwire/trace/ExceptionClickListener.java14
-rw-r--r--src/com/nullwire/trace/ExceptionHandler.java51
-rw-r--r--src/org/connectbot/ConsoleActivity.java7
-rw-r--r--src/org/connectbot/HostListActivity.java2
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