将应用设置为默认启动器并重新启动手机时,是否有任何不同之处? 我遇到了一些麻烦,主要是使用NFC,但是在试图解决这个问题时,却引发了一些类似的问题;这些问题只发生在启动时,从未发生过。
NFC问题: 当我的应用程序运行时,它读取NFC就好了。我将我的应用程序设置为默认启动器/主页,然后重新启动手机,直接启动到我的应用程序,但随后:
(第一关)nfc = NfcAdapter.getDefaultAdapter(this);可能会返回null,但是如果你把它放在一个脏的do-while中,那么你可以等到它没有。
(第二关)nfc.enableForegroundDispatch(...)可能会抛出一个空指针,但不是因为&nffc' nfc'如上所述,为null,但由com.android.nfc.ForegroundUtils.isInForeground(...)抛出(来自堆栈跟踪)。 再一次,你可以解决这个问题,把它弄脏,把它放在试一试,做一些,请不要评判我,大部分都是概念证据。
(第三个障碍)现在我们已经到目前为止,应用程序将不会收到NFC意图;如果该应用程序已关闭并重新启动,那么它可以正常运行 - 这些问题仅发生在boot->启动器上。
我已尝试仅在按钮推送时调用nfc.enableForegroundDispatch,在应用程序加载后,但在启动时获得所有相同的问题。 然后,我尝试启动一个活动,按下按钮,启动下一个活动,即侦听NFC意图的活动,但在启动时获得所有相同的问题。
然后我尝试启动应用程序并在创建时重新启动,使用布尔额外的,例如' dont_restart_again'避免重启循环,这通常有效,但在启动到应用程序时再次出现问题:首次启动到应用程序,从启动,布尔额外要么没有写,要么不是读取,因此重启循环。 这个'额外'行为让我觉得NFC仅在启动时的初始问题不是特定于NFC的,而是作为默认启动器特定启动到应用程序。
因此我的问题是:在启动应用程序和启动应用程序之间是否存在巨大差异?