Как отправить более 100 000+ файлов в виде ArrayList <String>в Intent (). PutExtra? - PullRequest
0 голосов
/ 08 февраля 2020

Я хочу передать ArrayList () из одного намерения в другое намерение. Иногда размер массива будет больше 100 000. Передача такого огромного массива в android вызовет исключение времени выполнения. Есть ли альтернатива для решения этой проблемы?

Вот код для отправки Intent:

var image = ArrayList<File>()

// getAllImages() returns all image present in the device as an `ArrayList<File>`

image.addAll(getAllImages()) // add all image present in the device. Sometimes size of image will be more than 100,000
try{
     val intent = Intent(applicationContext, Slider::class.java) // Slider is the receiving Intent
         intent.apply {
         putExtra("position", position) // sends position of selected image
         putExtra("arrayList", convertfile(image)) // convertfile(image) returns ArrayList<File> as ArrayList<String>
         flags = Intent.FLAG_ACTIVITY_NEW_TASK
         }
         startActivity(intent)

} catch (rx: java.lang.RuntimeException) {

} 

Код для convertfile ():

fun convertfile(file: java.util.ArrayList<File>) : java.util.ArrayList<String> {
var temp: String

val string = java.util.ArrayList<String>()
for (j in file.indices) {
    temp = file[j].path
    string.add(temp)
}
return string
}

Код для получения Intent:

 val position: Int  = intent.getIntExtra("position", 0)
 val file: ArrayList<String> = intent.getStringArrayListExtra("arrayList") as ArrayList<String>

Когда размер image равен 100 000 android, создается исключение времени выполнения. Как решить эту проблему? Есть ли альтернативное решение для передачи огромного массива между двумя намерениями?

...