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