2

从我们看到的文档 中,我们能够通过工厂方法提供活动。

所以我正在研究一个解决方案,我可以在其中进行活动并在其上装饰功能。但我不拥有这些活动。我只知道那里的名字。所以这就是我到目前为止所拥有的:

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
AppComponentFactory.instantiateApplication(classLoader, SomeoneElsesActivity.class.name)

我将从我自己的活动中调用它来打开 SomebodyElsesActivity.class 。但我不清楚如何添加额外的功能。我会在活动打开后生成一个像意图服务这样的后台服务吗?

如果我能够使用包装器,是否有办法禁止其他人对我的活动执行此操作?我不希望任何其他开发人员能够接受我的活动并围绕它包装功能并再次调用它。

4

1 回答 1

4

更新 2018-06-03AppComponentFactory在 P DP2 中工作。

从我们看到的文档中,我们能够通过工厂方法提供活动。

更重要的是,您AppComponentFactory通过android:appComponentFactory. 然后你的进程崩溃,因为AppComponentFactory直到下一个开发者预览才会工作

我会从我自己的活动中调用它来打开SomeoneElsesActivity.class

AFAIK,这不是你使用的方式AppComponentFactoryAppComponentFactory为框架提供回调以用于创建活动实例。

如果我能够使用包装器,是否有办法禁止其他人对我的活动执行此操作?

不要运送图书馆。欢迎包含您的库的应用程序的开发人员在他们的应用程序上下文中做他们想做的任何事情。

如果你指的是有人重新打包你的应用程序,他们无论如何都可以这样做——这只是让这项工作的一个方面更容易。原则上,您可以从 Activity 的零参数构造函数中检查 Java 调用堆栈,尝试确定是否有人在使用AppComponentFactory,然后采取措施。我不知道从长远来看这有多实用……尤其是因为AppComponentFactory它似乎不起作用。

于 2018-03-12T10:40:51.220 回答