Android:如何知道应用程序类中的组件类型?

Android:如何知道应用程序类中的组件类型?,android,Android,我正在扩展应用程序类以满足额外的自定义需求。我在里面调用一个方法。作为预期的行为,它被调用用于Android组件的类型活动、服务、广播接收器等,但我也希望仅在活动中调用它。这是克服这个问题的其他方法吗 public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); // the below method needs t

我正在扩展应用程序类以满足额外的自定义需求。我在里面调用一个方法。作为预期的行为,它被调用用于Android组件的类型活动、服务、广播接收器等,但我也希望仅在活动中调用它。这是克服这个问题的其他方法吗

public class MyApplication extends Application {

   @Override
   public void onCreate() {
      super.onCreate();

      // the below method needs to invoked only for service
      // but now called for all application components
      myCustomMethod();
   }

   ....
}
但我也希望它只能在活动中调用

不行。如果应用程序的一个组件打开,应用程序实例将运行

您需要在另一个类中进行定制,并在desire组件的实例打开时打开它

但我也希望它只能在活动中调用

不行。如果应用程序的一个组件打开,应用程序实例将运行


您需要在另一个类中执行自定义操作,并在desire组件的实例打开时将其打开。

只需将代码添加到入口点活动的onCreate方法中即可。如果您希望每个会话调用一次,请在共享首选项中添加两个int键,即app_launch_count和method_invoke_count。首先在应用程序的onCreate上递增,然后检查活动的onCreate中的第二个,如果第一个更大,则调用该方法:

只需将代码添加到入口点活动的onCreate方法。如果您希望每个会话调用一次,请在共享首选项中添加两个int键,即app_launch_count和method_invoke_count。首先在应用程序的onCreate上递增,然后检查活动的onCreate中的第二个,如果第一个更大,则调用方法:

将myCustomMethod移动到活动中。应用程序无法知道是什么触发了其进程的创建

或者,在应用程序上使用registerActivityLifecycleCallbacks注册ActivityLifecycleCallbacks对象,并将myCustomMethod逻辑放入onActivityCreated中。这需要14或更高版本。这将告诉您在流程实例化后创建每个活动的时间-如果您只关心第一个活动,则必须在onActivityCreated实现中注销回调。

将myCustomMethod移动到活动中。应用程序无法知道是什么触发了其进程的创建


或者,在应用程序上使用registerActivityLifecycleCallbacks注册ActivityLifecycleCallbacks对象,并将myCustomMethod逻辑放入onActivityCreated中。这需要14或更高版本。这将告诉您在流程实例化后创建每个活动的时间-如果您只关心第一个活动,则必须在onActivityCreated实现中注销回调。

有效的解决方法。但并非预期的解决方案。有效的解决方法。但这并不是预期的解决方案。