Changes after CR
authorjabarros <jabarros@solidgear.es>
Wed, 17 Sep 2014 14:46:11 +0000 (16:46 +0200)
committerjabarros <jabarros@solidgear.es>
Wed, 17 Sep 2014 14:46:11 +0000 (16:46 +0200)
res/layout/log_send_file.xml
res/values/strings.xml
src/com/owncloud/android/ui/activity/LogHistoryActivity.java

index 6e6e00f..6f129eb 100644 (file)
@@ -38,6 +38,6 @@
         android:id="@+id/sendLogHistoryButton"
         android:layout_width="match_parent"
        android:layout_height="50dp"
-        android:text="@string/prefs_log_send_history_button" />
+        android:text="@string/log_send_history_button" />
 
 </LinearLayout>
\ No newline at end of file
index 21115b9..dd5fe98 100644 (file)
        <string name="auth_redirect_non_secure_connection_title">Secure connection is redirected through an unsecured route.</string>
 
        <string name="actionbar_logger">Logs</string>
-       <string name="prefs_log_send_history_button">Send History</string>
+       <string name="log_send_history_button">Send History</string>
        <string name="log_mail_subject">Owncloud Android app logs</string>
        <string name="log_progress_dialog_text">Loading data...</string>
 
index 7b6b4a9..cb8a5e5 100644 (file)
@@ -21,9 +21,9 @@ import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
+import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 
-import android.app.ProgressDialog;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.AsyncTask;
@@ -54,13 +54,9 @@ public class LogHistoryActivity extends SherlockFragmentActivity  {
 
     private static final String DIALOG_WAIT_TAG = "DIALOG_WAIT";
 
-    private static final String KEY_LOG_TEXT = "LOG_TEXT";
-
     private String mLogPath = FileStorageUtils.getLogPath();
     private File logDIR = null;
 
-    private TextView mLogTV;
-
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -92,14 +88,6 @@ public class LogHistoryActivity extends SherlockFragmentActivity  {
             }
         });
 
-        mLogTV = (TextView) findViewById(R.id.logTV);
-
-        /// Load of saved instance state
-        if(savedInstanceState != null) {
-            String logTextSaved =  savedInstanceState.getString(LogHistoryActivity.KEY_LOG_TEXT);
-            mLogTV.setText(logTextSaved);
-        }
-
         if (mLogPath != null) {
             logDIR = new File(mLogPath);
         }
@@ -108,21 +96,15 @@ public class LogHistoryActivity extends SherlockFragmentActivity  {
             // Show a dialog while log data is being loaded
             showLoadingDialog();
 
-            // Start a new thread that will load all the log data
-            new LoadingLogTask().execute();
-        }
-    }
-
+            TextView logTV = (TextView) findViewById(R.id.logTV);
 
-    @Override
-    protected void onPause() {
-        // TODO Auto-generated method stub
-        super.onPause();
+            // Start a new thread that will load all the log data
+            LoadingLogTask task = new LoadingLogTask(logTV);
+            task.execute();
 
-        dismissLoadingDialog();
+        }
     }
 
-
     @Override
     public boolean onMenuItemSelected(int featureId, MenuItem item) {
         super.onMenuItemSelected(featureId, item);
@@ -170,69 +152,70 @@ public class LogHistoryActivity extends SherlockFragmentActivity  {
         }
     }
 
-
     /**
-     * Read and show log file info
+     *
+     * Class for loading the log data async
+     *
      */
-    private String readLogFile() {
-
-        String[] logFileName = Log_OC.getLogFileNames();
-
-        //Read text from files
-        StringBuilder text = new StringBuilder();
+    private class LoadingLogTask extends AsyncTask<String, Void, String> {
+        private final WeakReference<TextView> textViewReference;
 
-        try {
+        public LoadingLogTask(TextView logTV){
+            // Use of a WeakReference to ensure the TextView can be garbage collected
+            textViewReference  = new WeakReference<TextView>(logTV);
+        }
 
-            String line;
+        protected String doInBackground(String... args) {
+            return readLogFile();
+        }
 
-            for (int i = logFileName.length-1; i >= 0; i--) {
-                File file = new File(mLogPath,logFileName[i]);
-                if (file.exists()) {
-                    // Check if FileReader is ready
-                    if (new FileReader(file).ready()) {
-                        BufferedReader br = new BufferedReader(new FileReader(file));
-                        while ((line = br.readLine()) != null) {
-                            // Append the log info
-                            text.append(line);
-                            text.append('\n');
-                        }
-                    }
+        protected void onPostExecute(String result) {
+            if (textViewReference != null && result != null) {
+                final TextView logTV = textViewReference.get();
+                if (logTV != null) {
+                    logTV.setText(result);
+                    dismissLoadingDialog();
                 }
             }
         }
-        catch (IOException e) {
-            Log_OC.d(TAG, e.getMessage().toString());
-        }
 
-        return text.toString();
-    }
+        /**
+         * Read and show log file info
+         */
+        private String readLogFile() {
 
+            String[] logFileName = Log_OC.getLogFileNames();
 
-    /**
-     *
-     * Class for loading the log data async
-     *
-     */
-    private class LoadingLogTask extends AsyncTask<String, Void, String> {
-        protected String doInBackground(String... args) {
-            return readLogFile();
-        }
+            //Read text from files
+            StringBuilder text = new StringBuilder();
 
-        protected void onPostExecute(String result) {
-            mLogTV.setText(result);
+            try {
+
+                String line;
+
+                for (int i = logFileName.length-1; i >= 0; i--) {
+                    File file = new File(mLogPath,logFileName[i]);
+                    if (file.exists()) {
+                        // Check if FileReader is ready
+                        if (new FileReader(file).ready()) {
+                            BufferedReader br = new BufferedReader(new FileReader(file));
+                            while ((line = br.readLine()) != null) {
+                                // Append the log info
+                                text.append(line);
+                                text.append('\n');
+                            }
+                        }
+                    }
+                }
+            }
+            catch (IOException e) {
+                Log_OC.d(TAG, e.getMessage().toString());
+            }
 
-            dismissLoadingDialog();
+            return text.toString();
         }
    }
 
-    @Override
-    protected void onSaveInstanceState(Bundle outState) {
-        Log_OC.e(TAG, "onSaveInstanceState() start");
-        super.onSaveInstanceState(outState);
-        outState.putString(LogHistoryActivity.KEY_LOG_TEXT, mLogTV.getText().toString());
-        Log_OC.d(TAG, "onSaveInstanceState() end");
-    }
-
     /**
      * Show loading dialog
      */