Фрагмент с MapView работает медленно - PullRequest
0 голосов
/ 09 апреля 2019

Я создаю приложение с одним действием, в котором все действия, касающиеся ящика и т. Д., Выполняются вручную, и с тремя фрагментами, в которых отображается основной контент.В MainActivity фрагмент с картой размещается внутри контейнера фрагмента.Но когда я запускаю приложение, экран становится белым за 2-3 секунды до отображения карты.

Я пробовал с getMapAsync с OnMapReadyCallback, который не работал, и я искалдругие решения, но не смогли найти работающие.

MainActivity.kt

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)
    setSupportActionBar(toolbar)
    supportActionBar?.title = getString(R.string.app_name)

    val toggle = ActionBarDrawerToggle(
        this, drawer_layout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close
    )
    drawer_layout.addDrawerListener(toggle)
    toggle.syncState()
    nav_view.setNavigationItemSelectedListener(this)

    supportFragmentManager.beginTransaction()
        .replace(R.id.fragmentContainer, MapFragment())
        .commit()

    if (!checkDataConnection()) {
        val dialogView = View.inflate(this, R.layout.dialog_no_data, null)
        val dialogBuilder = AlertDialog.Builder(this)
            .setView(dialogView)
            .setCancelable(false)
        val alertDialog = dialogBuilder.show()

        dialogView.rescanDataConnection.setOnClickListener {
            if (checkDataConnection()) {
                alertDialog.dismiss()
            }
        }
    }
}

MapFragment.kt

class MapFragment : Fragment(), OnMapReadyCallback {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view = inflater.inflate(R.layout.fragment_map, container, false)

        val mapView = view.findViewById<MapView>(R.id.mapView)
        mapView.onCreate(savedInstanceState)
        mapView.getMapAsync(this)

        try {
            MapsInitializer.initialize(this.activity)
        } catch (e: GooglePlayServicesNotAvailableException) {
            e.printStackTrace()
        }
        return view
    }

    override fun onMapReady(p0: GoogleMap?) {
        // Necessary function for loading map async
    }
}

Так кто-нибудь может мне помочь с улучшением производительности?

...