// Path: app/src/main/java/com/wujingchao/android/demo/App.java
// public class App extends Application {
// 
// 
//     private static Context ctx;
// 
//     private static RefWatcher sRefWatcher;
// 
//     @Override
//     protected void attachBaseContext(Context base) {
//         super.attachBaseContext(base);
//         ctx = base;
//         TraceWrapper.beginSection("App cold start");
//     }
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
//         if (LeakCanary.isInAnalyzerProcess(this)) {//hprof文件的解析是在单独的文件
//             return;
//         }
//         sRefWatcher = LeakCanary.install(this);
//     }
// 
//     public static void leakWatch(Object ref) {
//         sRefWatcher.watch(ref);
//     }
// 
//     public static Context getContext() {
//         return ctx;
//     }
// 
// }
// 
// Path: app/src/main/java/com/wujingchao/android/demo/BaseActivity.java
// public abstract class BaseActivity extends AppCompatActivity {
// 
//     protected String TAG = this.getClass().getSimpleName();
// 
//     @Override
//     protected void onCreate(@Nullable Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//         String title = getIntent().getStringExtra("title");
//         if(!TextUtils.isEmpty(title)) {
//             setTitle(title);
//         }
//     }
// 
//     protected void bindViews(){
//         ButterKnife.bind(this);
//     }
// 
// 
//     static {
//         System.loadLibrary("c++_shared");
//         System.loadLibrary("native-lib");
//     }
// 
// }


import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;
import com.blankj.utilcode.util.CloseUtils;
import com.wujingchao.android.demo.App;
import com.wujingchao.android.demo.BaseActivity;
import com.wujingchao.android.demo.R;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
        new GetFileDescriptorTask(fileDescriptorCountTv).executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
    }

    static class GetFileDescriptorTask extends AsyncTask<Void, Integer, Integer> {

        private final WeakReference<TextView> contentView;



        GetFileDescriptorTask(TextView contentView) {
            this.contentView = new WeakReference<>(contentView);
        }

        @Override
        protected Integer doInBackground(Void... voids) {
            List<FileOutputStream> fileDescriptorHolder = new ArrayList<>(1000);
            int i = 0;
            for (; ; ) {
                try {
                    FileOutputStream fos = new FileOutputStream(App.getContext().getFilesDir() + File.separator + i);
                    fileDescriptorHolder.add(fos);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                    CloseUtils.closeIOQuietly(fileDescriptorHolder.toArray(new FileOutputStream[0]));
                    break;
                }
                i++;
                publishProgress(i);
            }

// Path: app/src/main/java/com/wujingchao/android/demo/App.java
// public class App extends Application {
// 
// 
//     private static Context ctx;
// 
//     private static RefWatcher sRefWatcher;
// 
//     @Override
//     protected void attachBaseContext(Context base) {
//         super.attachBaseContext(base);
//         ctx = base;
//         TraceWrapper.beginSection("App cold start");
//     }
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
//         if (LeakCanary.isInAnalyzerProcess(this)) {//hprof文件的解析是在单独的文件
//             return;
//         }
//         sRefWatcher = LeakCanary.install(this);
//     }
// 
//     public static void leakWatch(Object ref) {
//         sRefWatcher.watch(ref);
//     }
// 
//     public static Context getContext() {
//         return ctx;
//     }
// 
// }
// 
// Path: app/src/main/java/com/wujingchao/android/demo/BaseActivity.java
// public abstract class BaseActivity extends AppCompatActivity {
// 
//     protected String TAG = this.getClass().getSimpleName();
// 
//     @Override
//     protected void onCreate(@Nullable Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//         String title = getIntent().getStringExtra("title");
//         if(!TextUtils.isEmpty(title)) {
//             setTitle(title);
//         }
//     }
// 
//     protected void bindViews(){
//         ButterKnife.bind(this);
//     }
// 
// 
//     static {
//         System.loadLibrary("c++_shared");
//         System.loadLibrary("native-lib");
//     }
// 
// }


// Path: app/src/main/java/com/wujingchao/android/demo/os/MaxFileDescriptorActivity.java
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;
import com.blankj.utilcode.util.CloseUtils;
import com.wujingchao.android.demo.App;
import com.wujingchao.android.demo.BaseActivity;
import com.wujingchao.android.demo.R;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;

        new GetFileDescriptorTask(fileDescriptorCountTv).executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
    }

    static class GetFileDescriptorTask extends AsyncTask<Void, Integer, Integer> {

        private final WeakReference<TextView> contentView;



        GetFileDescriptorTask(TextView contentView) {
            this.contentView = new WeakReference<>(contentView);
        }

        @Override
        protected Integer doInBackground(Void... voids) {
            List<FileOutputStream> fileDescriptorHolder = new ArrayList<>(1000);
            int i = 0;
            for (; ; ) {
                try {
                    FileOutputStream fos = new FileOutputStream(App.getContext().getFilesDir() + File.separator + i);
                    fileDescriptorHolder.add(fos);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                    CloseUtils.closeIOQuietly(fileDescriptorHolder.toArray(new FileOutputStream[0]));
                    break;
                }
                i++;
                publishProgress(i);
            }

            return i;