从 Android 库模块在主应用程序中启动 activity
Launch an activity in main app from an Android Library Module
我正在构建我的第一个库模块,我计划为多个项目填充可重用代码。我的第一个障碍是我需要能够从库模块在主应用程序中启动 activity。
例如,我有启动画面activity。它运行 2 秒,然后启动主 activity。我相信我可以重用这个闪屏activity,我想把它放在我的库模块中。但是,我不确定如何从库中启动主要 activity。
主应用设置中的 Mainfest:
<activity
android:name="com.example.myLibraryModule.SplashScreen"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
清单启动当前驻留在我的库模块中的初始屏幕。
由于库是主应用程序的依赖项,而不是相反,我不确定如何从我的 SplashScreenActivity
启动 MainActivity
。这并不容易:
Intent i = new intent(this, MainActivity.class);
startActivity(i);
我将从您的主清单中删除 SplashScreenActivity
并创建一个名为 startMainActivity()
或类似名称的 protected
方法。在 SplashScreenActivity
基地 class 中您通常希望开始 MainActivity
.
的地方调用此方法
然后在您的主项目中,我将子class SplashScreenActivity
并覆盖startMainActivity()
方法以执行您希望的行为。不要忘记将您的 SplashScreenActivity
subclass 放入主项目的清单中。
这样您就可以在可能依赖于它的所有项目中轻松地重用 SplashScreenActivity
的行为。
你不应该那样做。您正在强烈耦合这两个 classes(class 从 lib 开始 activity 和要加载的 Activity。
相反 - 您可以在应用程序中设置广播接收,它将接收一个意图对象并为您启动 activity。如果将来您希望远程启动其他活动或服务 - 您将能够使用相同的广播接收器来接受来自您的库的请求。您所要做的就是将数据添加到 Intent 的 Extras 集合中,该集合将包含要打开的 Activity(或者当然是任何其他任务)。
这个解决方案 de-couples 你的库和应用程序,它是更好的架构智慧(在我看来)。
祝你好运!
我正在构建我的第一个库模块,我计划为多个项目填充可重用代码。我的第一个障碍是我需要能够从库模块在主应用程序中启动 activity。
例如,我有启动画面activity。它运行 2 秒,然后启动主 activity。我相信我可以重用这个闪屏activity,我想把它放在我的库模块中。但是,我不确定如何从库中启动主要 activity。
主应用设置中的 Mainfest:
<activity
android:name="com.example.myLibraryModule.SplashScreen"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
清单启动当前驻留在我的库模块中的初始屏幕。
由于库是主应用程序的依赖项,而不是相反,我不确定如何从我的 SplashScreenActivity
启动 MainActivity
。这并不容易:
Intent i = new intent(this, MainActivity.class);
startActivity(i);
我将从您的主清单中删除 SplashScreenActivity
并创建一个名为 startMainActivity()
或类似名称的 protected
方法。在 SplashScreenActivity
基地 class 中您通常希望开始 MainActivity
.
然后在您的主项目中,我将子class SplashScreenActivity
并覆盖startMainActivity()
方法以执行您希望的行为。不要忘记将您的 SplashScreenActivity
subclass 放入主项目的清单中。
这样您就可以在可能依赖于它的所有项目中轻松地重用 SplashScreenActivity
的行为。
你不应该那样做。您正在强烈耦合这两个 classes(class 从 lib 开始 activity 和要加载的 Activity。
相反 - 您可以在应用程序中设置广播接收,它将接收一个意图对象并为您启动 activity。如果将来您希望远程启动其他活动或服务 - 您将能够使用相同的广播接收器来接受来自您的库的请求。您所要做的就是将数据添加到 Intent 的 Extras 集合中,该集合将包含要打开的 Activity(或者当然是任何其他任务)。
这个解决方案 de-couples 你的库和应用程序,它是更好的架构智慧(在我看来)。
祝你好运!