简单的一个类,搜索不出设备,偶尔进页面崩溃,demo中的mainactivity 如果OnDeviceRegistryListener不在adapter中,直接写在activity也搜不出设备
qq570026938 opened this issue · comments
/**
-
投屏
/
class TpActivity : BaseActivity(R.layout.cling_dialog),
OnDeviceRegistryListener {
private val clingDeviceAdapter by lazy { ClingDeviceAdapter() }
private val deviceList = mutableListOf<Device<, *, *>>()companion object {
private const val TAG = "ClingListDialog"
fun startTpActivity(context: Context, title: String, url: String, img: String, id: String) {
val intent = Intent(context, TpActivity::class.java)
intent.putExtra("title", title)
intent.putExtra("url", url)
intent.putExtra("img", img)
intent.putExtra("id", id)
context.startActivity(intent)
}
}private var title: String = ""
private var url: String = ""
private var img: String = ""
private var id: String = ""override fun initView(savedInstanceState: Bundle?) {
title = intent?.getStringExtra("title") ?: title
url = intent?.getStringExtra("url") ?: url
img = intent?.getStringExtra("img") ?: img
id = intent?.getStringExtra("id") ?: id
DLNACastManager.getInstance().registerDeviceListener(this)
mBinding.apply {
wifi = "当前wifi:<${Utils.getWiFiInfoSSID(this@TpActivity)}>"
ivClose.setOnClickListener { finish() }
clingRecycler.addLinearManager()
clingDeviceAdapter.setList(deviceList)
clingDeviceAdapter.setOnItemClickListener { _, _, position ->
clingDeviceAdapter.setSelectedDevice(clingDeviceAdapter.getItem(position))
// startActivity(Intent(requireContext(), TpActivity::class.java))
}
clingRecycler.adapter = clingDeviceAdapter
}
}
override fun initData() {
}
override fun onStart() {
super.onStart()
DLNACastManager.getInstance().bindCastService(this)
}
override fun onStop() {
DLNACastManager.getInstance().unbindCastService(this)
super.onStop()
}
override fun onDestroy() {
DLNACastManager.getInstance().unregisterListener(this)
super.onDestroy()
}
override fun onDeviceAdded(device: Device<*, *, *>?) {
device?.also {
if (!deviceList.contains(it)) {
deviceList.add(it)
}
}
}
override fun onDeviceUpdated(device: Device<*, *, *>?) {
}
override fun onDeviceRemoved(device: Device<*, *, *>?) {
if (deviceList.contains(device)) {
deviceList.remove(device)
}
}
}
已整体重构