سؤال

هل هناك طريقة للتسجيل في فعاليات النشاط؟أنا مهتم بشكل خاص بأحداث onStart / onStop، ولا أريد إضافة عمليات خاصة في النشاط لذلك.

هل كانت مفيدة؟

المحلول

تتمثل إحدى طرق الحصول على أحداث من دورة حياة الأنشطة الأخرى في تسجيل فصلك الدراسي كمنتسب 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 وما فوق...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top