2011-09-29 20 views
5

मुझे एक ऐसी सेवा विकसित करने की आवश्यकता है जो हर गतिविधि शुरू करने के लिए सुनो। क्या मुझे ऐसा कुछ करना चाहिए?एंड्रॉइड ऐप लॉन्च के लिए सुनो

ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses(); 
for (int i = 0; i < runningAppProcessInfo.size(); i++) { 
    Log.v("Proc: ", runningAppProcessInfo.get(i).processName); 
} 

और क्या मुझे हर एक्स सेकंड में ऐसा करने की ज़रूरत है? क्या यह बैटरी खपत को प्रभावित करता है?

+1

अतिरिक्त जानकारी: ActivityManager.getRunningTasks (1) चल रहे कार्यों की सूची से पहला कार्य वापस कर देगा। यह कार्य हमेशा अग्रभूमि में एक प्रतीत होता है। – black

उत्तर

1

जहां तक ​​मुझे पता है कि वर्तमान में ऐप के लॉन्च को सुनने का कोई तरीका नहीं है, जब तक कि यह पहली बार लॉन्च नहीं हो रहा है। ACTION_PACKAGE_FIRST_LAUNCH (ब्रॉडकास्ट क्रिया:। जब कि आवेदन पहले शुरू की है (कि पहली बार इसे बंद कर दिया राज्य के बाहर ले जाया जाता है) है एक आवेदन के इंस्टॉलर पैकेज करने के लिए भेजा गया

तो मुझे लगता है कि अपने समाधान इसके लिए सबसे अच्छा है अभी।

2

जहाँ तक मुझे पता के रूप में android.app पैकेज। में एक वर्ग IActivityController.Stub है लेकिन यह एक {@hide} इंटरफेस है (जैसा कि किसी ने कहा @hide API एक्सेस करने की कुछ विधि वहाँ है)।

हम एक सेट कर सकते हैं इस तरह गतिविधि स्विच सुनने के लिए श्रोता:

mAm = ActivityManagerNative.getDefault();   
    try { 
     mAm.setActivityController(new ActivityController()); 

    } catch (RemoteException e) { 
     System.err.println("** Failed talking with activity manager!");} 

और कक्षा गतिविधि प्रबंधकगर @ hide भी है। गतिविधि नियंत्रक एक वर्ग है IActivityController.Stub।

कैसे @hide एपीआई का उपयोग करने की:

  1. आप एक have- @ छिपाने-api Android.jar उपयोग करने के लिए निर्माण करने के लिए एंड्रॉयड स्रोत कोड प्राप्त कर सकते हैं। प्रतिबिंब द्वारा
+0

इसके बारे में एक नोट: एंड्रॉइड के आधुनिक संस्करणों पर, 'setActivityController' को कॉल करने के लिए 'SET_ACTIVITY_WATCHER' अनुमति की आवश्यकता होती है, जिसके लिए आपके एप्लिकेशन को एंड्रॉइड फ्रेमवर्क पर हस्ताक्षर करने के लिए उपयोग की जाने वाली कुंजी के साथ हस्ताक्षरित किया जाता है, जो वास्तव में संभव नहीं है यदि आप विकास कर रहे हैं एक थर्ड पार्टी एप्लिकेशन सभी रोमों पर चलाने के लिए डिज़ाइन किया गया है। – FuegoFro

संबंधित मुद्दे