سؤال

هل من الممكن بطريقة ما الاستماع إلى أحداث Activitymanager ، على سبيل المثال عند بدء الأنشطة؟ هل يرسل ActivityManager عمليات البث؟ لم أجد أي شيء يشير إلى أنه يفعل.

ما أحتاج إلى القيام به بشكل أساسي: أريد أن يطلق تطبيقي أحد أنشطتي كلما تم إطلاق/تركيز تطبيق معين (ثالث). المشكلة هي أن هذا يجب أن يحدث قبل عرض تطبيق الطرف الثالث بالفعل.

ما جربته بقدر الحلول:

  1. إخراج logcat: أتعلم logcat كل 0.8 ثانية (تم ترشيحه لإظهار أحداث ActivityManager فقط) ولكن هذا يأكل إلى العديد من ressources
  2. GetRunningTasks: يبطئ الهاتف كثيرًا أيضًا وليس آمنًا للغاية ، حيث قد يكون النشاط قيد التشغيل ولكن ليس قيد التركيز حاليًا

أيه أفكار؟

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

المحلول

أفترض أنه لا توجد في الواقع طريقة قديمة أخرى للتعامل مع حالة نظام glabal ، فقط

 (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

ActivityManager.getRecentTasks () - إرجاع قائمة بالمهام التي يتم تشغيلها حاليًا ، حيث كانت الأحدث هي الأولى والأكبر بعد ذلك.

للحصول على تفاصيل تحقق مستندات

ربما على الرغم من أن Android هو Linux ، يمكنك تشغيل أدوات النظام مثل

Runtime.getRuntime().exec("ps -aux | grep smth")

لكنني أعتقد أنه سيكون من الصعب اكتشاف تطبيق Java معين.

نصائح أخرى

أعتقد أنه يمكنك استخدام وضع الإطلاق لتحديد النشاط الذي سيتم إطلاقه إلى المستوى الأعلى. يرجى التحقق من السؤال: Android Singletask أو وضع إطلاق SingleInstance؟. ربما أنها سوف تساعدك.

لقد ألقيت نظرة على مصدر Android ، لكن لا يبدو أن هناك أي أحداث يتم بثها.

https://android.googlesource.com/platform/packages/providers/applicationsprovider

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