Android架构Activity参考问题

问题描述 投票:0回答:1

我有一个带有大量 NFC 和 GPS 功能的 Android 应用程序。我需要使用 GPS 或 NFC 标签扫描来验证用户的位置。

我创建了一个处理 NFC 的用例,但我想参考我在本课程中的活动。对我来说问题是我需要活动

  • 启动NFC前台调度
  • 停止NFC前台调度

用例应该有一个start()函数来启动NFC前台调度。它应该在扫描后自动停止前台调度(这需要活动)

我考虑了我的活动和保存该活动的 NFC 用例之间的一个类。我称之为 InBetweenClass。

class InBetweenClass(val activity: AppCompatActivity) {

private var nfcAdapter: NfcAdapter = NfcAdapter.getDefaultAdapter(activity)

fun startNfc() {
    val intent = Intent(activity, activity.javaClass)
    intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP
    val pendingIntent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
        PendingIntent.getActivity(activity, 0, intent, PendingIntent.FLAG_MUTABLE)
    } else {
        PendingIntent.getActivity(activity, 0, intent, 0)
    }
    nfcAdapter.enableForegroundDispatch(activity, pendingIntent, null, null)
}

fun stopNfc() {
    try {
        nfcAdapter.disableForegroundDispatch(activity)
    } catch (ex: Exception) {
        // tbd   
    }
}

}

问题: 我现在可以将 InBetweenClass 的引用移交给我的 NFC 用例。但这真的比在我的用例中进行活动更好吗?当我持有对 InBetweenClass 的引用并且此类持有活动时,在我看来,它或多或少与在我的 NFC 用例中拥有该活动相同。

什么模式最能将我的用例与我的活动分离? 我的应用程序是一个单一活动应用程序。

android architecture decoupling
1个回答
0
投票

也许将签名更改为:

class InBetweenClass(val activity: AppCompatActivity)

至:

abstract class BaseNfcActivity : AppCompatActivity(), NfcAdapter.ReaderCallback
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.