Skip to content

Commit d903492

Browse files
authored
Migrated to AndroidX. (#159)
* 📝 [Update] - README.md * 🚩 [Update] - Migrated to AndroidX. * ✨ [Add] - Supported custom Thread Pool.
1 parent 07d3b5b commit d903492

31 files changed

+151
-107
lines changed

README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,8 @@ Well, it doesn't have a name like Rocky, Cosmos or Fish. Android File Picker, li
2727
| ![](https://github.com/rosuH/AndroidFilePicker/master/images/default_theme.png) | ![](https://github.com/rosuH/AndroidFilePicker/master/images/reply_theme.png) | ![](https://github.com/rosuH/AndroidFilePicker/master/images/crane_theme.png) | ![](https://github.com/rosuH/AndroidFilePicker/master/images/shrine_theme.png) |
2828

2929
## Version Compatibility
30-
It depends on your targetAPI:
31-
- `targetAPI <= 28`, you are fine ;)
32-
- `targetAPI >= 29`, please enable `requestLegacyExternalStorage` feature for your project :D
30+
31+
Support Android 11 and all versions below.
3332

3433
## Download
3534

README_CN.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,7 @@
2828
| ![](https://github.com/rosuH/AndroidFilePicker/master/images/default_theme.png) | ![](https://github.com/rosuH/AndroidFilePicker/master/images/reply_theme.png) | ![](https://github.com/rosuH/AndroidFilePicker/master/images/crane_theme.png) | ![](https://github.com/rosuH/AndroidFilePicker/master/images/shrine_theme.png) |
2929

3030
## 版本兼容性
31-
这取决于您的 targetAPI :
32-
33-
- `targetAPI <= 28`,完全没有问题 ;)
34-
- `targetAPI >= 29`,请为您的项目启用 `requestLegacyExternalStorage` 特性:D
31+
支持 Android 11 及其以下所有版本。
3532

3633
## 下载使用
3734

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Top-level build file where you can add configuration options common to all sub-projects/modules.
22

33
buildscript {
4-
ext.kotlin_version="1.5.21"
4+
ext.kotlin_version="1.6.0"
55
repositories {
66
google()
77
mavenCentral()

filepicker/build.gradle

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,20 @@ android {
3636
}
3737
}
3838

39-
ext.supportLibVersion = '28.0.0'
40-
4139
dependencies {
4240
implementation fileTree(dir: 'libs', include: ['*.jar'])
4341
compileOnly 'com.squareup.picasso:picasso:2.5.2'
4442
compileOnly ("com.github.bumptech.glide:glide:4.9.0") {
4543
exclude group: "com.android.support"
4644
}
47-
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${kotlin_version}"
48-
implementation "com.android.support:appcompat-v7:${supportLibVersion}"
49-
implementation "com.android.support:recyclerview-v7:${supportLibVersion}"
50-
implementation "com.android.support.constraint:constraint-layout:2.0.4"
45+
def kotlin_version = '1.6.0'
46+
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
47+
48+
implementation 'androidx.appcompat:appcompat:1.3.0'
49+
implementation 'androidx.recyclerview:recyclerview:1.2.1'
50+
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
51+
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
5152
testImplementation 'junit:junit:4.12'
52-
androidTestImplementation 'com.android.support.test:runner:1.0.2'
53-
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
53+
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
54+
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
5455
}

filepicker/src/androidTest/java/me/rosuh/filepicker/ExampleInstrumentedTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package me.rosuh.filepicker;
22

33
import android.content.Context;
4-
import android.support.test.InstrumentationRegistry;
5-
import android.support.test.runner.AndroidJUnit4;
4+
import androidx.test.platform.app.InstrumentationRegistry;
5+
import androidx.test.ext.junit.runners.AndroidJUnit4;
66

77
import org.junit.Test;
88
import org.junit.runner.RunWith;

filepicker/src/main/java/me/rosuh/filepicker/FilePickerActivity.kt

Lines changed: 39 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ import android.content.Intent
77
import android.content.pm.PackageManager
88
import android.os.*
99
import android.os.Environment.MEDIA_MOUNTED
10-
import android.support.v4.app.ActivityCompat
11-
import android.support.v4.content.ContextCompat
12-
import android.support.v4.util.ArrayMap
13-
import android.support.v4.widget.SwipeRefreshLayout
14-
import android.support.v7.app.AppCompatActivity
15-
import android.support.v7.widget.LinearLayoutManager
16-
import android.support.v7.widget.RecyclerView
10+
import androidx.core.app.ActivityCompat
11+
import androidx.core.content.ContextCompat
12+
import androidx.collection.ArrayMap
13+
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
14+
import androidx.appcompat.app.AppCompatActivity
15+
import androidx.recyclerview.widget.LinearLayoutManager
16+
import androidx.recyclerview.widget.RecyclerView
1717
import android.util.Log
1818
import android.view.LayoutInflater
1919
import android.view.View
@@ -48,28 +48,15 @@ class FilePickerActivity : AppCompatActivity(), View.OnClickListener,
4848
private var btnGoBack: ImageView? = null
4949
private var mainHandler = Handler(Looper.getMainLooper())
5050

51-
private val loadingFileWorkerQueue: BlockingQueue<Runnable> = LinkedBlockingQueue()
52-
5351
// Creates a thread pool manager
54-
private var loadingThreadPool: ThreadPoolExecutor = ThreadPoolExecutor(
55-
1, // Initial pool size
56-
1, // Max pool size
57-
KEEP_ALIVE_TIME,
58-
TimeUnit.MINUTES,
59-
loadingFileWorkerQueue
60-
)
61-
get() {
62-
if (field.isShutdown) {
63-
field = ThreadPoolExecutor(
64-
1,
65-
1,
66-
KEEP_ALIVE_TIME,
67-
TimeUnit.MINUTES,
68-
loadingFileWorkerQueue
69-
)
70-
}
71-
return field
72-
}
52+
private val loadingThreadPool: ExecutorService =
53+
FilePickerManager.config.threadPool ?: ThreadPoolExecutor(
54+
1, // Initial pool size
55+
1, // Max pool size
56+
KEEP_ALIVE_TIME,
57+
TimeUnit.MINUTES,
58+
LinkedBlockingDeque()
59+
)
7360

7461
private val loadFileRunnable: Runnable by lazy {
7562
Runnable {
@@ -190,7 +177,12 @@ class FilePickerActivity : AppCompatActivity(), View.OnClickListener,
190177

191178
override fun onDestroy() {
192179
super.onDestroy()
193-
if (!loadingThreadPool.isShutdown) {
180+
Log.i(TAG, "onDestroy")
181+
val shouldShutDownThreadPool = pickerConfig.threadPool != loadingThreadPool
182+
|| pickerConfig.threadPoolAutoShutDown
183+
184+
if (!loadingThreadPool.isShutdown && shouldShutDownThreadPool) {
185+
Log.i(TAG, "shutdown thread pool")
194186
loadingThreadPool.shutdown()
195187
}
196188
currOffsetMap.clear()
@@ -218,6 +210,7 @@ class FilePickerActivity : AppCompatActivity(), View.OnClickListener,
218210
permissions: Array<out String>,
219211
grantResults: IntArray
220212
) {
213+
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
221214
when (requestCode) {
222215
FILE_PICKER_PERMISSION_REQUEST_CODE -> {
223216
if (grantResults.isEmpty() || grantResults[0] != PackageManager.PERMISSION_GRANTED) {
@@ -303,7 +296,11 @@ class FilePickerActivity : AppCompatActivity(), View.OnClickListener,
303296

304297
rvNav = findViewById<RecyclerView>(R.id.rv_nav_file_picker).apply {
305298
layoutManager =
306-
LinearLayoutManager(this@FilePickerActivity, LinearLayoutManager.HORIZONTAL, false)
299+
LinearLayoutManager(
300+
this@FilePickerActivity,
301+
LinearLayoutManager.HORIZONTAL,
302+
false
303+
)
307304
adapter = navAdapter
308305
}
309306
rvList = findViewById<RecyclerViewFilePicker>(R.id.rv_list_file_picker).apply {
@@ -328,9 +325,18 @@ class FilePickerActivity : AppCompatActivity(), View.OnClickListener,
328325
return
329326
}
330327
if (Environment.getExternalStorageState() != MEDIA_MOUNTED) {
331-
throw Throwable(cause = IllegalStateException("External storage is not available ====>>> Environment.getExternalStorageState() != MEDIA_MOUNTED"))
328+
Log.e(
329+
TAG, "External storage is not available ====>>> "
330+
+ "Environment.getExternalStorageState() != MEDIA_MOUNTED"
331+
)
332+
return
333+
}
334+
try {
335+
Log.i(TAG, "loadList in ${Thread.currentThread()} in $loadingThreadPool")
336+
loadingThreadPool.submit(loadFileRunnable)
337+
} catch (e: RejectedExecutionException) {
338+
Log.e(TAG, "submit job failed")
332339
}
333-
loadingThreadPool.submit(loadFileRunnable)
334340
}
335341

336342
private fun initRv(
@@ -652,6 +658,7 @@ class FilePickerActivity : AppCompatActivity(), View.OnClickListener,
652658
private fun isCanSelect() = selectedCount < maxSelectable
653659

654660
companion object {
661+
private const val TAG = "FilePickerActivity"
655662
private const val FILE_PICKER_PERMISSION_REQUEST_CODE = 10201
656663

657664
// Sets the amount of time an idle thread waits before terminating

filepicker/src/main/java/me/rosuh/filepicker/adapter/BaseAdapter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package me.rosuh.filepicker.adapter
22

3-
import android.support.v7.widget.RecyclerView
3+
import androidx.recyclerview.widget.RecyclerView
44
import android.view.View
55
import me.rosuh.filepicker.bean.FileBean
66

filepicker/src/main/java/me/rosuh/filepicker/adapter/FileListAdapter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package me.rosuh.filepicker.adapter
22

3-
import android.support.v4.util.ArraySet
4-
import android.support.v7.widget.RecyclerView
3+
import androidx.collection.ArraySet
4+
import androidx.recyclerview.widget.RecyclerView
55
import android.view.LayoutInflater
66
import android.view.View
77
import android.view.ViewGroup

filepicker/src/main/java/me/rosuh/filepicker/adapter/FileNavAdapter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package me.rosuh.filepicker.adapter
22

3-
import android.support.v7.widget.RecyclerView
3+
import androidx.recyclerview.widget.RecyclerView
44
import android.view.LayoutInflater
55
import android.view.View
66
import android.view.ViewGroup

filepicker/src/main/java/me/rosuh/filepicker/adapter/RecyclerViewListener.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package me.rosuh.filepicker.adapter
22

33
import android.content.res.Resources
4-
import android.support.v4.view.GestureDetectorCompat
5-
import android.support.v7.widget.RecyclerView
4+
import androidx.core.view.GestureDetectorCompat
5+
import androidx.recyclerview.widget.RecyclerView
66
import android.view.GestureDetector
77
import android.view.MotionEvent
88
import android.view.View

0 commit comments

Comments
 (0)