2015-07-10 49 views
0

我對Android如何啓動啓動器活動感到困惑。Android中啓動活動的層次結構

  1. 如果我聲明一個啓動活動在manifest文件中像這樣

    <activity android:name=".Activities.Home"> 
        <intent-filter> 
         <action android:name="android.intent.action.MAIN" /> 
         <category android:name="android.intent.category.LAUNCHER" /> 
        </intent-filter> 
    </activity> 
    

和我有一個Application類基於像

if(ParseUser.getCurrentUser() == null){ 
      Intent intent = new Intent(context,Home.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intent); 
     }else{ 
      Intent intent = new Intent(context,MainActivity.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intent); 
     } 
檢查它調用的 activity

哪一個有優先權? manifestApplication。什麼是事件流? 例如Application-> Manifest(或)Manifest-> Application(或)Application overrides Manifest?

  1. 如果我在Android中接收到notification,我的Application類被調用。這會使應用程序類中的活動啓動,如上所示。有沒有辦法來檢測誰調用應用程序類? 我的意思是用戶是否啓動它,還是從notification開始?

  2. 如果有辦法解決這個問題。 當我收到通知時,如何防止應用程序類中的活動被調用?

在此先感謝。

回答

1

只需傳遞應用程序中的布爾額外值,並在Application類和User Launch的調用中作出差異。

 Intent intent = new Intent(context,Home.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     intent.putExtra("APP_CALL",True); 
     startActivity(intent); 

現在,在您的主頁活動只是檢查APP_CALL如果從應用類調用然後布爾值將是TRUE,否則爲false。

你也可以在飛濺活動中寫入檢查登錄。

+0

你能解釋它是如何工作的嗎?你能回答我所有的3個問題嗎? –

+0

已更新我的回答看看 –

+0

我不需要發送到我的HomeClass,因爲我在那裏沒有做任何事情。我需要檢查應用程序類,應用程序類是由用戶調用還是傳入通知觸發它? –