-2

我目前有兩個活動。一種是登錄活動,在成功登錄後導致包含多個片段的主要活動。使用USB-Intent過濾器進行多個活動

我目前有一個USB意圖過濾器和廣播接收器,用於檢查USB設備是否插入。一旦它檢測到它是一個設備,並且我設置爲設備的默認應用程序,它將重新啓動應用程序,即使我目前正在主要活動中。問題在於它繞過登錄屏幕活動並崩潰,因爲它不包含第二個活動的數據,因爲沒有登錄。

我的問題發生在應用程序重新啓動並重置連接的事實上。有沒有辦法讓應用不能重新啓動,或者只是重新加載第二個活動中的最後一個片段?

<application 
     android:theme="@style/AppTheme" 
     android:allowBackup="true" 
     android:name=".MainApplication" 
     android:icon="@drawable/icon" 
     android:label="@string/app_name"> 

     <activity 
       android:name=".LoginActivity" 
       android:theme="@style/Theme.Dark"> 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 
        <category android:name="android.intent.category.LAUNCHER" /> 
       </intent-filter> 
     </activity>     

     <activity 
       android:name=".DeviceRegistrationActivity" 
       android:theme="@style/Theme.Dark"/> 

     <activity 
       android:name=".navDrawer" 
       android:theme="@style/Theme.Dark"> 
       <intent-filter> 
        <category android:name="android.intent.category.DEFAULT" /> 
        <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> 
       </intent-filter> 

       <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" 
        android:resource="@xml/device_filter" /> 
+0

爲什麼不將USB意圖移動到LoginActivity,並且啓動時,可以跳過它並啓動Main,如果您擁有有效的會話。 – 323go

+0

我計劃將Login活動移到NavDrawer片段。所以這個問題仍然存在。需要知道是否有辦法停止刷新並返回到顯示的最後一個片段 – Jesusrz001

回答

1

的問題是,它繞過登錄屏幕活動和崩潰,因爲它不包含第二個活動的數據,因爲沒有日誌中已發生。

然後你不應該讓登錄過程在一個單獨的活動。使登錄過程成爲與USB事件正在啓動的活動相同的活動所顯示的片段。如果當該活動開始時,它確定它不具有認證信息—,無論出於何種原因—它顯示登錄片段。

有沒有辦法可以讓應用程序不重新啓動

不是真的。 Android設備沒有無限的RAM。你的進程將最終終止,並且你已經在靜態數據成員或其他單例中(如身份驗證數據)中緩存的任何內容都將消失。

或者只是重新加載第二個活動中的最後一個片段?

當然歡迎您第二次活動展示您想要的任何東西。但是,如果您沒有認證數據,那麼「無論您希望如何」都最好是獲取該數據的片段。

相關問題