2011-01-22 78 views
0

每当应用程序创建一个新的Activity实例时,是否有拦截方法?我只对属于应用程序过程的活动感兴趣,而不是电话上的所有活动。有没有办法做到这一点?应用程序类是以什么方式参与的?在创建Activity实例后,我可以覆盖哪些方法?有没有办法在实例化后拦截Android Activity?

+0

为什么你需要这个(当然,除非这是一个商业秘密)?我很难想象一个精心设计的应用程序需要这样的情况。 – 2011-01-22 23:30:26

+0

我不知道为什么在这一点上它至关重要,但它是这样我们可以更容易地设计设计良好的应用程序。 :-)我有一个想法,我想探索它,我需要这个功能来做到这一点。 – chubbsondubs 2011-01-22 23:35:24

回答

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将实例化之前将创建的操作系统保证。

警告:您应该避免在侦听器中保留对Activity的强引用,因为当操作系统尝试杀死该Activity时(作为Activity或Process生命周期的一部分) 。可能为此使用WeakReference

相关问题