Explorar o código

RA Image Android

修复bug
重写上传列表视图
去掉一些无用的旧逻辑
Ray Zhang %!s(int64=8) %!d(string=hai) anos
pai
achega
4d1781f3c5

+ 7 - 7
RA Image/app/app.iml

@@ -62,13 +62,6 @@
       <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
@@ -76,6 +69,13 @@
       <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />

+ 6 - 8
RA Image/app/src/main/AndroidManifest.xml

@@ -94,12 +94,11 @@
 
         <service
             android:name=".UploadService"
-            android:label="usai upload service" >
-
+            android:label="usai upload service">
             <intent-filter>
                 <action android:name="com.usai.raimage.uploadservice" />
             </intent-filter>
-            </service>
+        </service>
 
         <activity
             android:name=".AboutActivity"
@@ -155,11 +154,10 @@
         <activity
             android:name=".Model.ManufactureListActivity"
             android:theme="@style/Theme.AppCompat.Light" />
-
-        <activity android:name=".UploadList.UploadListActivity"
-            android:theme="@style/Theme.AppCompat.Light">
-
-        </activity>
+        <activity
+            android:name=".UploadList.UploadListActivity"
+            android:theme="@style/Theme.AppCompat.Light"></activity>
+        <activity android:name=".TaskActivity" android:theme="@style/Theme.AppCompat.Light"></activity>
     </application>
 
 </manifest>

+ 1 - 2
RA Image/app/src/main/java/com/usai/redant/raimage/MainActivity.java

@@ -34,7 +34,6 @@ import com.usai.redant.raimage.Model.ManufactureListActivity;
 import com.usai.redant.raimage.Model.ModelActivity;
 import com.usai.redant.raimage.POP.PopActivity;
 import com.usai.redant.raimage.PhotoList.PhotoListActivity;
-import com.usai.redant.raimage.UploadList.UploadListActivity;
 import com.usai.util.AES;
 import com.usai.util.MD5;
 import com.usai.util.RAUtil;
@@ -1000,7 +999,7 @@ public class MainActivity extends AppCompatActivity
 		if (newVersion) {
 			switch (item.getItemId()) {
 				case R.id.upload_list_btn : {
-					Intent intent = new Intent(this, UploadListActivity.class);
+					Intent intent = new Intent(this, TaskActivity.class);
 					startActivity(intent);
 				}
 				break;

+ 348 - 0
RA Image/app/src/main/java/com/usai/redant/raimage/TaskActivity.java

@@ -0,0 +1,348 @@
+package com.usai.redant.raimage;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.support.annotation.LayoutRes;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AlertDialog;
+import android.support.v7.app.AppCompatActivity;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.ImageButton;
+import android.widget.ListView;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import com.usai.util.RAUploadManager;
+
+import java.util.ArrayList;
+
+//import android.support.v7.widget.ListViewCompat;
+
+public class TaskActivity extends AppCompatActivity {
+
+    ArrayList<Bundle> task_arr= new ArrayList<>();
+    ListView tasklist;
+
+
+    private RAUploadManager uploadManager;
+
+
+    private UploadService.MyBinder binder;
+    private UploadService uploadServiceservice;
+    private ServiceConnection serviceConnection;
+
+    boolean serviceConnectionFlag;
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_task);
+
+
+//设置返回键
+        ActionBar mActionBar = getSupportActionBar();
+        mActionBar.setHomeButtonEnabled(true);
+        mActionBar.setDisplayHomeAsUpEnabled(true);
+        mActionBar.setTitle("RA Image");
+
+
+
+
+
+        tasklist = (ListView)findViewById(R.id.task_list);
+
+        tasklist.setAdapter(new TaskAdapter(this,R.layout.upload_list_cell/*,task_arr*/));
+
+
+
+
+        serviceConnection = new ServiceConnection() {
+            @Override
+            public void onServiceConnected(ComponentName name, IBinder service) {
+
+
+                Log.d("_LIST","-------connected service  tid="+Thread.currentThread().getId());
+                serviceConnectionFlag = true;
+
+                binder = (UploadService.MyBinder)service;
+                uploadServiceservice = binder.getService();
+
+                uploadManager = uploadServiceservice.uploadManager;
+                task_arr = (ArrayList<Bundle>) uploadManager.get_arr_queue().clone(); //uploadManager.arr_queue;
+
+                final TaskAdapter adapter = (TaskAdapter)tasklist.getAdapter();
+
+                adapter.notifyDataSetChanged();
+
+
+                uploadManager.uiUpdateListener = new RAUploadManager.UIUpdateListener() {
+                    @Override
+                    public void updateCell(long index, Bundle taskinfo) {
+                        if(true) {
+
+                            runOnUiThread(new Runnable() {
+                                @Override
+                                public void run() {
+
+                                    adapter.notifyDataSetChanged();
+                                }
+                            });
+
+                            return;
+                        }
+
+                    }
+
+                    @Override
+                    public void updateList(final ArrayList<Bundle> newlist) {
+                        if(true) {
+
+                            runOnUiThread(new Runnable() {
+                                @Override
+                                public void run() {
+                                    task_arr = (ArrayList<Bundle>) newlist.clone();
+                                    adapter.notifyDataSetChanged();
+                                }
+                            });
+
+                            return;
+                        }
+
+                    }
+                };
+
+
+//                tasklist.getAdapter().no.notifyDataSetChanged();
+//                runOnUiThread(new Runnable() {
+//                    @Override
+//                    public void run() {
+//                        adapter = new uploadAdapter(R.layout.upload_list_cell);
+//                        uploadList.setAdapter(adapter);
+//                    }
+//                });
+            }
+
+            @Override
+            public void onServiceDisconnected(ComponentName name) {
+                serviceConnectionFlag = false;
+                uploadManager.uiUpdateListener = null;
+            }
+        };
+
+        bindService();
+
+    }
+
+    @Override
+    protected void onDestroy() {
+
+        unbindService(serviceConnection);
+
+        super.onDestroy();
+    }
+
+
+    private void bindService() {
+        Intent intent = new Intent(TaskActivity.this, UploadService.class);
+
+        bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
+    }
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.upload_list_menu,menu);
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case android.R.id.home: {
+                finish();
+            }
+            break;
+            case R.id.clear_upload_list_btn: {
+//                for(int i=0;i<10;i++)
+//                runOnUiThread(new Runnable() {
+//                    @Override
+//                    public void run() {
+//
+//                        Log.d("_LIST","running  tid="+Thread.currentThread().getId());
+//                        Log.d("_LIST", "uploadlist UI  size:  "+ displaylist.size());
+//                        long timeStart = System.currentTimeMillis();
+////                        displaylist = (ArrayList<Bundle>) newlist.clone();
+//                        adapter.notifyDataSetChanged();
+//
+//
+//                        Log.d("_LIST", "uploadlist UI: COST" + (System.currentTimeMillis() - timeStart));
+//                    }
+//                });
+                clearUploadList();
+            }
+            break;
+        }
+        return true;
+    }
+
+    private void clearUploadList() {
+        if (task_arr.size() == 0) {
+            new AlertDialog.Builder(this)
+                    .setTitle("Warning")
+                    .setMessage("Upload list is empty.")
+                    .setPositiveButton("OK",null)
+                    .show();
+            return;
+        }
+
+        new AlertDialog.Builder(this)
+                .setTitle("Clear upload list")
+                .setMessage("Are you sure remove all error/finish task?")
+                .setPositiveButton("YES", new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        // clear
+                        if (serviceConnectionFlag == true && uploadServiceservice != null) {
+                            uploadManager.clearTask();
+//                            adapter.notifyDataSetChanged();
+                        }
+
+                    }
+                })
+                .setNegativeButton("NO", new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+
+                    }
+                })
+                .show();
+
+    }
+    class TaskAdapter extends ArrayAdapter
+    {
+
+        public TaskAdapter(@NonNull Context context, @LayoutRes int resource/*, @NonNull ArrayList<Bundle> objects*/) {
+            super(context, resource/*, objects*/);
+        }
+
+        @Override
+        public int getCount() {
+            return task_arr.size();
+        }
+
+        @Override
+        public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
+
+            Log.d("_LIST","running  tid="+Thread.currentThread().getId());
+            long timeStart = System.currentTimeMillis();
+
+            final Bundle item = task_arr.get(position);
+//            Bundle taskinfo = item.getBundle("params");
+//            String barcode = taskinfo.getString("barcode");
+
+            RAUploadManager.TaskStatus istatus = RAUploadManager.TaskStatus.values()[item.getInt("status",0)];
+            String status="";
+            switch(istatus)
+            {
+                case TaskStatusStart:
+                    status="uploading";
+                    break;
+                case TaskStatusStop:
+                    status="stop";
+                    break;
+                case TaskStatusError:
+                    status="warring";
+                    break;
+                case TaskStatusWait:
+                    status="waiting";
+                    break;
+                case TaskStatusFinish:
+                    status="finish";
+                    break;
+
+                default:
+                    status="warring";
+                    break;
+            }
+            double percent = item.getDouble("progress",0);
+            String err = item.getString("msg");
+            String name = item.getString("file","");
+
+            View cell;
+            ViewHolder holder;
+            if (convertView != null) {
+
+                cell = convertView;
+                holder = (ViewHolder)cell.getTag();
+                Log.d("_LIST", "getView: " + holder);
+
+            } else  {
+//                cell = LayoutInflater.from(getApplicationContext()).inflate(resourceId,null);
+                cell = View.inflate(getApplicationContext(),R.layout.upload_list_cell,null);
+                holder = new ViewHolder();
+                holder.name_tv = (TextView)cell.findViewById(R.id.upload_name_tv);
+                holder.progressBar = (ProgressBar)cell.findViewById(R.id.upload_progressBar);
+                holder.state_tv = (TextView)cell.findViewById(R.id.upload_state_tv);
+                holder.progress_tv = (TextView)cell.findViewById(R.id.upload_progress_tv);
+                holder.err_tv = (TextView)cell.findViewById(R.id.upload_err_tv);
+                holder.btn_reload=(ImageButton) cell.findViewById(R.id.btn_reload);
+
+
+                holder.btn_reload.setImageResource(R.drawable.ic_action_reload);
+                if(istatus!= RAUploadManager.TaskStatus.TaskStatusError)
+                {
+                    holder.btn_reload.setVisibility(View.GONE);
+                }
+                else
+                {
+                    holder.btn_reload.setVisibility(View.VISIBLE);
+                    Log.d("_LIST", "new listener: position" + position);
+                    holder.btn_reload.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View v) {
+
+
+                            Bundle task = task_arr.get(position);
+
+                            Log.d("_LIST", "retry: " + task.getString("file","file is null") +"position" + position);
+                            uploadManager.startTask(task);
+
+                        }
+                    });
+                }
+                cell.setTag(holder);
+            }
+
+            holder.name_tv.setText(name);
+//            holder.progressBar.setProgress(100 *(int)percent);
+            holder.progressBar.setProgress((int) (100 * percent));
+            holder.state_tv.setText(status);
+//            holder.progress_tv.setText(100*percent+"%");
+            holder.progress_tv.setText(String.format("%.2f%%",100*percent));
+            holder.err_tv.setText(err);
+
+
+
+            Log.d("_LIST", "getView(): POSITION   "+position+" file   " + item.getString("file","no file"));
+            return cell;
+        }
+
+        private class ViewHolder {
+            public TextView name_tv;
+            public ProgressBar progressBar;
+            public TextView state_tv;
+            public TextView progress_tv;
+            public TextView err_tv;
+            public ImageButton btn_reload;
+        }
+    }
+}

+ 64 - 37
RA Image/app/src/main/java/com/usai/redant/raimage/UploadList/UploadListActivity.java

@@ -37,10 +37,13 @@ import java.util.ArrayList;
 
 public class UploadListActivity extends AppCompatActivity {
 
-//    private SwipeMenuListView uploadList;
+
+    private ArrayList<Bundle> displaylist = new ArrayList<Bundle>();
+
+    //    private SwipeMenuListView uploadList;
     private ListView uploadList;
     private uploadAdapter adapter;
-    private ArrayList<Bundle> arr;
+//    private ArrayList<Bundle> arr;
 
     private RAUploadManager uploadManager;
     private UploadService.MyBinder binder;
@@ -82,8 +85,11 @@ public class UploadListActivity extends AppCompatActivity {
         @Override
         public void updateCell(long index, final Bundle taskinfo)
         {
+            if(true)
+                return;
 
             if(true) {
+
                 runOnUiThread(new Runnable() {
                     @Override
                     public void run() {
@@ -159,35 +165,28 @@ public class UploadListActivity extends AppCompatActivity {
                 }
             });
         }
-
         @Override
-        public void listAdd(ArrayList<Bundle> tasks) {
+//        public void updateList()
+        public void updateList(final ArrayList<Bundle> newlist)
+        {
 
-        }
 
-        @Override
-        public void listRemove(final ArrayList<Bundle> tasks) {
             runOnUiThread(new Runnable() {
                 @Override
                 public void run() {
-//                    uploadManager.arr_queue.removeAll(tasks);
-                    uploadManager.saveTasks();
+
+                    Log.d("_LIST","running  tid="+Thread.currentThread().getId());
+                    Log.d("_LIST", "uploadlist UI  size:  "+ newlist.size());
+                    long timeStart = System.currentTimeMillis();
+                    displaylist = (ArrayList<Bundle>) newlist.clone();
                     adapter.notifyDataSetChanged();
+
+
+                    Log.d("_LIST", "uploadlist UI: COST" + (System.currentTimeMillis() - timeStart));
                 }
             });
+
         }
-//        @Override
-//        public void updateList()
-//        {
-//
-//            runOnUiThread(new Runnable() {
-//                @Override
-//                public void run() {
-//                    adapter.notifyDataSetChanged();
-//                }
-//            });
-//
-//        }
     };
 
     @Override
@@ -204,7 +203,8 @@ public class UploadListActivity extends AppCompatActivity {
         // 初始化视图
 //        uploadList = (SwipeMenuListView)findViewById(R.id.upload_list);
         uploadList = (ListView)findViewById(R.id.upload_list);
-
+        adapter = new uploadAdapter(R.layout.upload_list_cell);
+        uploadList.setAdapter(adapter);
         serviceConnection = new ServiceConnection() {
             @Override
             public void onServiceConnected(ComponentName name, IBinder service) {
@@ -213,17 +213,23 @@ public class UploadListActivity extends AppCompatActivity {
                 binder = (UploadService.MyBinder)service;
                 uploadServiceservice = binder.getService();
 
+
+
+
                 uploadManager = uploadServiceservice.uploadManager;
                 uploadManager.uiUpdateListener = uiUpdateListener;
-                arr = uploadManager.arr_queue;
+                displaylist = (ArrayList<Bundle>) uploadManager.get_arr_queue().clone(); //uploadManager.arr_queue;
 
-                runOnUiThread(new Runnable() {
-                    @Override
-                    public void run() {
-                        adapter = new uploadAdapter(R.layout.upload_list_cell);
-                        uploadList.setAdapter(adapter);
-                    }
-                });
+
+
+//                adapter.notifyDataSetChanged();
+//                runOnUiThread(new Runnable() {
+//                    @Override
+//                    public void run() {
+//                        adapter = new uploadAdapter(R.layout.upload_list_cell);
+//                        uploadList.setAdapter(adapter);
+//                    }
+//                });
             }
 
             @Override
@@ -372,6 +378,21 @@ public class UploadListActivity extends AppCompatActivity {
             }
             break;
             case R.id.clear_upload_list_btn: {
+//                for(int i=0;i<10;i++)
+//                runOnUiThread(new Runnable() {
+//                    @Override
+//                    public void run() {
+//
+//                        Log.d("_LIST","running  tid="+Thread.currentThread().getId());
+//                        Log.d("_LIST", "uploadlist UI  size:  "+ displaylist.size());
+//                        long timeStart = System.currentTimeMillis();
+////                        displaylist = (ArrayList<Bundle>) newlist.clone();
+//                        adapter.notifyDataSetChanged();
+//
+//
+//                        Log.d("_LIST", "uploadlist UI: COST" + (System.currentTimeMillis() - timeStart));
+//                    }
+//                });
                 clearUploadList();
             }
             break;
@@ -380,7 +401,7 @@ public class UploadListActivity extends AppCompatActivity {
     }
 
     private void clearUploadList() {
-        if (arr.size() == 0) {
+        if (displaylist.size() == 0) {
             new AlertDialog.Builder(this)
                     .setTitle("Warning")
                     .setMessage("Upload list is empty.")
@@ -413,7 +434,7 @@ public class UploadListActivity extends AppCompatActivity {
 
     }
 
-
+//
 //    private int taskSwipeType(int position) {
 //        Bundle item = arr.get(position);
 ////        Bundle taskinfo = item.getBundle("params");
@@ -450,12 +471,12 @@ public class UploadListActivity extends AppCompatActivity {
 
         @Override
         public int getCount() {
-            return arr.size();
+            return displaylist.size();
         }
 
         @Override
         public Bundle getItem(int position) {
-            return arr.get(position);
+            return displaylist.get(position);
         }
 
         @Override
@@ -467,7 +488,7 @@ public class UploadListActivity extends AppCompatActivity {
 //        public int getViewTypeCount() {
 //            return 4;
 //        }
-
+//
 //        @Override
 //        public int getItemViewType(int position) {
 //            /**
@@ -483,7 +504,10 @@ public class UploadListActivity extends AppCompatActivity {
         @Override
         public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
 
-            final Bundle item = arr.get(position);
+            Log.d("_LIST","running  tid="+Thread.currentThread().getId());
+            long timeStart = System.currentTimeMillis();
+
+            final Bundle item = displaylist.get(position);
 //            Bundle taskinfo = item.getBundle("params");
 //            String barcode = taskinfo.getString("barcode");
 
@@ -521,7 +545,7 @@ public class UploadListActivity extends AppCompatActivity {
 
                 cell = convertView;
                 holder = (ViewHolder)cell.getTag();
-                Log.d("Holder", "getView: " + holder);
+                Log.d("_LIST", "getView: " + holder);
 
             } else  {
 //                cell = LayoutInflater.from(getApplicationContext()).inflate(resourceId,null);
@@ -563,6 +587,9 @@ public class UploadListActivity extends AppCompatActivity {
             holder.progress_tv.setText(String.format("%.2f%%",100*percent));
             holder.err_tv.setText(err);
 
+
+
+            Log.d("_LIST", "getView(): POSITION   "+position+" COST   " + (System.currentTimeMillis() - timeStart));
             return cell;
         }
 

+ 4 - 8
RA Image/app/src/main/java/com/usai/redant/raimage/uploadSettingActivity.java

@@ -1,6 +1,5 @@
 package com.usai.redant.raimage;
 
-import android.app.Activity;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -10,14 +9,11 @@ import android.os.Bundle;
 import android.os.IBinder;
 import android.support.v7.app.ActionBar;
 import android.support.v7.app.AppCompatActivity;
-import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
-import android.view.View;
 import android.widget.EditText;
 import android.widget.Switch;
 
-import com.usai.redant.raimage.UploadList.UploadListActivity;
 import com.usai.util.RAUploadManager;
 
 public class uploadSettingActivity extends AppCompatActivity {
@@ -45,8 +41,8 @@ public class uploadSettingActivity extends AppCompatActivity {
         if (preferences != null) {
 
             auto_upload = preferences.getBoolean("auto_upload",true);
-            auto_rm_fs = preferences.getBoolean("auto_rm_fs",true);
-            auto_rm_er = preferences.getBoolean("auto_rm_er",false);
+            auto_rm_fs = preferences.getBoolean("auto_rm_finish",true);
+            auto_rm_er = preferences.getBoolean("auto_rm_error",false);
             compress = preferences.getBoolean("compress",true);
             retry_count = preferences.getInt("retry_count",2);
 
@@ -84,8 +80,8 @@ public class uploadSettingActivity extends AppCompatActivity {
         final int retry_count = Integer.parseInt(retry_count_et.getText().toString());
 
         editor.putBoolean("auto_upload",auto_upload);
-        editor.putBoolean("auto_rm_fs",auto_rm_fs);
-        editor.putBoolean("auto_rm_er",auto_rm_er);
+        editor.putBoolean("auto_rm_finish",auto_rm_fs);
+        editor.putBoolean("auto_rm_error",auto_rm_er);
         editor.putBoolean("compress",compress);
         editor.putInt("retry_count",retry_count);
 

+ 43 - 56
RA Image/app/src/main/java/com/usai/util/RAUploadManager.java

@@ -17,6 +17,7 @@ import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.util.ArrayList;
+import java.util.List;
 
 import static com.usai.util.Network.URL_UPLOAD;
 
@@ -38,7 +39,12 @@ public class RAUploadManager {
     public static final  int RESULT_BARCODE_ERROR=-50;
 
     public TaskStatus newtaskStatus= TaskStatus.TaskStatusWait;
-    public ArrayList<Bundle> arr_queue;
+    private ArrayList<Bundle> arr_queue;
+
+    public ArrayList<Bundle> get_arr_queue()
+    {
+        return arr_queue;
+    }
 //    private List<Bundle> operation_queue;
 //    private ExecutorService es = Executors.newFixedThreadPool(3);//
     // .newFixedThreadPool();
@@ -66,10 +72,12 @@ public class RAUploadManager {
     public interface UIUpdateListener {
 //        void onProgress(long index, double percentage);
         void updateCell(long index, Bundle taskinfo);
-        void listAdd(ArrayList<Bundle> tasks);
-        void listRemove(ArrayList<Bundle> tasks);
 //        void updateList();
 
+        void updateList(ArrayList<Bundle> newlist);
+//        void addTasks(ArrayList<Bundle> tasks);
+//        void RemoveTasks(ArrayList<Bundle> tasks);
+
 //        void onFinish(int code, String res/*, HashMap<String, List<String>> headers*/);
     }
 
@@ -241,7 +249,7 @@ public class RAUploadManager {
                 else if (status==TaskStatus.TaskStatusError&&removeError)
                     removefromlist=true;
 
-//                synchronized (this)
+                synchronized (this)
                 {
 
                     Log.d("_synchronized", "OperationCallback operateFinish: " );
@@ -417,74 +425,53 @@ public class RAUploadManager {
     public void removeTask(Bundle task)
     {
 
-        long timeStart = System.currentTimeMillis();
-//            arr_queue.remove(task);
-//            saveTasks();
-        String path = filePath(task);
-        File file = new File(path);
-        if(file.exists())
-        {
-            file.delete();
-        }
-
-
-
-
-            if(uiUpdateListener!=null) {
-                ArrayList<Bundle> remove = new ArrayList<Bundle>();
-                remove.add(task);
-                uiUpdateListener.listRemove(remove);
-            }
-            else
-            {
-                synchronized (this)
-                {
-                Log.d("_synchronized", "removeTask");
-                    arr_queue.remove(task);
-
-                    saveTasks();
-                Log.d("_synchronized", "removeTask: end" + (System.currentTimeMillis() - timeStart));
-                }
-            }
-
-
-
-
-    };
-    public void removeTasks(ArrayList<Bundle> tasks)
-    {
 
-
-        long timeStart = System.currentTimeMillis();
-        for(Bundle task:tasks)
+        synchronized (this)
         {
-
+            Log.d("_synchronized", "removeTask");
+            long timeStart = System.currentTimeMillis();
+            arr_queue.remove(task);
+            saveTasks();
             String path = filePath(task);
             File file = new File(path);
             if(file.exists())
             {
                 file.delete();
             }
+
+            if(uiUpdateListener!=null)
+                uiUpdateListener.updateList(arr_queue);
+
+            Log.d("_synchronized", "removeTask: end" + (System.currentTimeMillis() - timeStart));
         }
 
 
+    };
+    public void removeTasks(List<Bundle> tasks)
+    {
 
-            if(uiUpdateListener!=null) {
-                uiUpdateListener.listRemove(tasks);
-            }
-            else
-            {
-                synchronized (this)
-            {
-                Log.d("_synchronized", "removeTasks: " );
-                            arr_queue.removeAll(tasks);
+        synchronized (this)
+        {
+            Log.d("_synchronized", "removeTasks: " );
+            long timeStart = System.currentTimeMillis();
+            arr_queue.removeAll(tasks);
             saveTasks();
-                Log.d("_synchronized", "removeTasks: end" + (System.currentTimeMillis() - timeStart));
-            }
-            }
+            for(Bundle task:tasks)
+            {
 
+                String path = filePath(task);
+                File file = new File(path);
+                if(file.exists())
+                {
+                    file.delete();
+                }
+            }
+            if(uiUpdateListener!=null)
+                uiUpdateListener.updateList(arr_queue);
 
 
+            Log.d("_synchronized", "removeTasks: end" + (System.currentTimeMillis() - timeStart));
+        }
 
     };
     public void stopAllTasks()

+ 21 - 0
RA Image/app/src/main/res/layout/activity_task.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="com.usai.redant.raimage.TaskActivity">
+
+    <ListView
+        android:id="@+id/task_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginBottom="8dp"
+        android:layout_marginLeft="8dp"
+        android:layout_marginRight="8dp"
+        android:layout_marginTop="8dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+</android.support.constraint.ConstraintLayout>

+ 4 - 2
RA Image/app/src/main/res/layout/activity_upload_list.xml

@@ -5,12 +5,14 @@
     android:layout_height="match_parent"
     tools:context="com.usai.redant.raimage.UploadList.UploadListActivity">
 
-    <com.usai.redant.raimage.UploadList.swipemenulistview.SwipeMenuListView
+    <ListViewCompat
         android:id="@+id/upload_list"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         >
 
-    </com.usai.redant.raimage.UploadList.swipemenulistview.SwipeMenuListView>
+    </ListViewCompat>
+
+
 
 </RelativeLayout>

+ 24 - 18
RA Image/app/src/main/res/layout/upload_list_cell.xml

@@ -4,19 +4,23 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/upload_percent_tv"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight">
 
     <android.support.constraint.ConstraintLayout
         android:layout_width="0dp"
         android:layout_height="wrap_content"
-        android:layout_marginBottom="8dp"
         android:layout_marginLeft="8dp"
-        android:layout_marginRight="0dp"
-        android:layout_marginTop="0dp"
-        app:layout_constraintBottom_toBottomOf="@+id/btn_reload"
+        android:layout_marginRight="8dp"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toLeftOf="@+id/btn_reload"
-        app:layout_constraintTop_toTopOf="@+id/btn_reload">
+        app:layout_constraintHorizontal_bias="0.0"
+        app:layout_constraintTop_toTopOf="parent"
+        android:layout_marginTop="8dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:layout_marginBottom="8dp"
+        android:id="@+id/constraintLayout"
+        app:layout_constraintVertical_bias="0.0">
 
         <TextView
             android:id="@+id/upload_name_tv"
@@ -24,11 +28,11 @@
             android:layout_height="wrap_content"
             android:layout_marginEnd="8dp"
             android:layout_marginLeft="8dp"
-            android:layout_marginRight="8dp"
+            android:layout_marginRight="0dp"
             android:layout_marginStart="8dp"
             android:layout_marginTop="8dp"
             android:hint="QS885555464784613654"
-            app:layout_constraintHorizontal_bias="0.165"
+            app:layout_constraintHorizontal_bias="0.0"
             app:layout_constraintLeft_toLeftOf="parent"
             app:layout_constraintRight_toRightOf="parent"
             app:layout_constraintTop_toTopOf="parent"
@@ -51,19 +55,20 @@
             android:layout_width="0dp"
             android:layout_height="16dp"
             android:layout_marginLeft="8dp"
-            android:layout_marginRight="8dp"
+            android:layout_marginRight="0dp"
             android:layout_marginTop="0dp"
             android:max="100"
             android:progress="0"
             app:layout_constraintLeft_toLeftOf="parent"
             app:layout_constraintRight_toRightOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/upload_name_tv" />
+            app:layout_constraintTop_toBottomOf="@+id/upload_name_tv"
+            app:layout_constraintHorizontal_bias="0.0" />
 
         <TextView
             android:id="@+id/upload_progress_tv"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginRight="8dp"
+            android:layout_marginRight="0dp"
             android:layout_marginTop="8dp"
             android:text="progress"
             app:layout_constraintRight_toRightOf="parent"
@@ -85,16 +90,17 @@
         android:id="@+id/btn_reload"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_marginBottom="8dp"
+        android:layout_marginEnd="7dp"
+        android:layout_marginRight="5dp"
         android:layout_marginTop="8dp"
         android:tint="@color/blue"
-        app:layout_constraintTop_toTopOf="parent"
+        android:visibility="visible"
+        app:layout_constraintBottom_toBottomOf="@+id/constraintLayout"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/constraintLayout"
         app:srcCompat="@drawable/ic_action_reload"
         tools:layout_constraintRight_creator="1"
-        tools:layout_constraintTop_creator="1"
-        android:layout_marginRight="7dp"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintBottom_toBottomOf="parent"
-        android:layout_marginBottom="8dp"
-        android:layout_marginEnd="7dp" />
+        tools:layout_constraintTop_creator="1" />
 
 </android.support.constraint.ConstraintLayout>