我正在扩展Application
课程以满足我的额外自定义需求。而我正在调用一种方法。作为预期的行为,它会针对Android组件的类型(Activity
,Service
,Broadcast receiver
等进行调用,但我希望仅在{{1}上调用它}。这是解决这个问题的其他方法吗?
Activity
答案 0 :(得分:2)
但是我希望它也只能在Activity上调用。
无法完成。如果您的应用程序的一个组件已打开,则将运行Application实例。
您需要在另一个类中执行自定义的操作,并在需要组件的实例打开时打开它。
答案 1 :(得分:2)
只需将您的代码添加到入口点活动的onCreate方法即可。如果您希望每个会话调用一次 - 将两个int键添加到共享首选项 - app_launch_count和method_invoke_count。首先在App的onCreate上增加,然后检查Activity的onCreate中的第二个,如果first first则调用该方法:)
答案 2 :(得分:2)
将myCustomMethod()
移至活动中。 Application
无法知道触发创建过程的原因。
或者,使用registerActivityLifecycleCallbacks()
上的Application
注册ActivityLifecycleCallbacks
个对象,并将myCustomMethod()
逻辑放入onActivityCreated()
。这需要minSdkVersion
为14或更高。这将告诉您在实例化过程后创建每个活动的时间 - 如果您只关心第一个活动,则必须取消注册onActivityCreated()
实施中的回调。