每当Application创建一个新的Activity实例时,有没有办法拦截?我只对属于应用程序进程的活动感兴趣,而不是对手机上的所有活动感兴趣。有办法做到这一点吗? Application类是否以某种方式参与了此操作?在创建Activity实例后,我可以覆盖哪些方法来获取它?
答案 0 :(得分:2)
好的,只是一个想法 - 在您的应用程序中,您可以创建一个基本活动类,以便所有其余活动都从该基本活动创建子类。然后在onCreate()
回调中,您可以通知某个侦听器实例有关新应用程序活动实例创建的事实:
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// put the code to notify a listener here
}
}
public class YourWorkingActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
}
如果你使用ListActivity
(这对于普通的Android应用来说很常见),那么你也应该为它创建一个类似的BaseListActivity。
最有可能听众的最佳候选者是Application
子类,因为操作系统会保证在实例化任何Activity
之前创建它。
警告:您应避免在侦听器中保留对活动的强引用,因为当操作系统尝试终止该活动时,它会创建内存泄漏(作为活动或进程的一部分)生命周期)。可能会使用WeakReference。