android 中启动活动的层次结构

Hierarchy of launching activities in android

我对 android 如何启动其启动器活动感到困惑。

  1. 如果我像这样在 manifest 文件中声明启动器 activity

    <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 class,它根据

这样的检查调用 activity
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);
        }

哪个优先? manifestApplication。事件流程是什么? 例如Application->Manifest (or) Manifest->Application (or) Application overrides Manifest ?

  1. 如果我在 Android 中收到 notification,我的应用程序 class 将被调用。这使得应用程序 class 中的活动开始,如上所示。有没有办法检测谁调用了应用程序 class ? 我的意思是用户启动它,还是从进来的notification开始?

  2. 如果有办法解决这个问题。 如何防止在收到通知时调用应用程序 class 中的 activity?

提前致谢。

只需从应用程序传递布尔附加值并在应用程序 class 和用户启动的调用中进行区分。

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

现在在您的主页中 activity 只需检查 APP_CALL 如果它是从应用程序 class 调用的,则 bool 值将为 true,否则为 false。

你也可以在 splash 中写 activity 来检查登录。