2012-09-29 86 views
2

是否有注册活动事件的方法?我特别对onStart/onStop事件感兴趣,并且我不想在该活动中添加特殊操作。注册活动的事件

+0

你从另一个类的意思吗? – DiogoNeves

+0

我认为是这样,这是我的一个愚蠢的问题:)让我检查... – DiogoNeves

+0

我在想活动的registerComponentCallbacks(回调),但它不是真的你需要... – DiogoNeves

回答

1

一种方式来获得的其他活动的生命周期事件是注册类作为Application.ActivityLifecycleCallbacks与主Application实例和过滤事件您感兴趣的Activity

这是一个简短的例子(您可能希望注册来自MainActivity.onCreate以外的其他方法/类别的回调,否则您将错过该消息;并且您可能在那里存在您不想要的依赖项)

关于您想要窥探的活动:

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // Register a spy for this activity 
     getApplication().registerActivityLifecycleCallbacks(new ActivitySpy(this)); 
    } 
} 

然后间谍代码看起来是这样的:

public class ActivitySpy implements ActivityLifecycleCallbacks { 

    private final Activity mActivity; 

    public ActivitySpy(Activity activity) { 
     mActivity = activity; 
    } 

    @Override 
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) { 
     if (mActivity == activity) 
      Log.i("SPY", "Activity Created"); 
    } 

    @Override 
    public void onActivityDestroyed(Activity activity) { 
     if (mActivity == activity) 
      Log.i("SPY", "Activity Destroyed"); 
    } 

    // (...) Other overrides 

} 

如果你有你想跟着活动的引用您还可以注册从另一个地方间谍。

我希望这有助于:)

编辑:我忘了提,这将只API等级14以上工作...