2013-01-17 13 views
5

Tüm uygulamaların başlatma sayısını nasıl alabilirim? Yüklü uygulamaların tam listesine sahibim ve bir uygulama yüklendiğinde yayınım var, ancak herhangi bir uygulamanın başlatma sayısına ihtiyacım var. Bunu, bu app ile görüyorum. Cpu zamanınız, ön planınız ve lansman sayınız var ... bunu nasıl yapıyorlar?yayın başlangıcında uygulama başlatma sayısı

cevap

2

Daha önce hiç yapmadım, ama eminim ki http://developer.android.com/reference/android/app/ActivityManager.html ihtiyacınız olan bilgiyi sağlar.

+0

Activitymanager ile başlatılan zamana sahip olamazsınız .. Muhtemelen pil istatistikleri ile sahip olabilirsiniz ... Kullanıcı bir öğle yemeği uygulaması ne zaman bir olasılıkla bir mesajlaşma var mı? Teşekkürler – AndreaC

+0

Bunu yapmak için zaten göremiyorum. – jsmith

+0

imkansız, bu uygulama yapmak için çok kötü bir yol https://play.google.com/store/apps/details?id=com.rootuninstaller.bstatspro&hl=it – AndreaC

3

Sonunda bunu yapıyorum! Çalıştığım bir uygulama (arkaplan veya aktif) son gördüğümde kontrol ettiğimde, çalışan uygulamaları her dakika kontrol eden bir AlarmManager yaratıyorum. bu süre bir dakikadan büyükse sayımı arttırırım. Şimdi, uygulamanın harici bir sunucuya ne kadar veri gönderdiğini bulmaya çalışıyorum, bu verilere sahibim, fakat bu verilerin benim uygulamamı yüklediğinden mi yoksa akıllı telefonumu ne zaman başlattığımı biliyor musunuz?

Long txByte = TrafficStats.getUidTxBytes(listApp.getAppsRunning().get(i).getPid()); 

bu kodu sayısı süresini

for(int i=0; i< listApp.getAppsRunning().size(); i++) 
    { 
     String pName = listApp.getAppsRunning().get(i).getPackageName(); 
     String Ldate = "0"; 
     int Nrun = 0; 
     Long Ntime = null, Ndata = null ; 
     Cursor c=db.fetchInstalled(pName); 
     if(c.moveToFirst()) 
     { 
      Nrun = c.getInt(2); 
      Ldate = c.getString(3); 
      Ntime = c.getLong(4); 
      Ndata = c.getLong(5); 


      Log.d("db", "last time: " + Nrun+ " time: " + Ldate); 
     } 

     if(Ldate.equalsIgnoreCase("0")) 
     { 
      Nrun++; 
      db.updateLaunchAndTime(Nrun, lastUpdated, pName, Ntime, Ndata); 
     } 
     else 
     { 
      SimpleDateFormat dateFormat = new SimpleDateFormat("MMMM dd, yyyy h:mmaa"); 
      Date lastDate = null; 
      Date currentDate = null; 
      try { 
       lastDate = dateFormat.parse(Ldate); 
       currentDate = dateFormat.parse(lastUpdated); 
      } catch (ParseException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      //int pid = android.os.Process.getUidForName(listApp.getAppsRunning().get(i).getPid()); 
      Long txByte = TrafficStats.getUidTxBytes(listApp.getAppsRunning().get(i).getPid()); 
      Log.d("pid process", "pid: " + listApp.getAppsRunning().get(i).getPid()); 

      Ndata = txByte; 

      Log.d("data send", "send: " + Ndata); 

      long diff = currentDate.getTime() - lastDate.getTime(); 
      if(diff > 100* 1000) 
      { 
       Log.d("db", "difference plus 1 min app: " + pName); 
       Nrun++; 
      } 
      Ntime = Ntime+diff; 


      db.updateLaunchAndTime(Nrun, lastUpdated, pName, Ntime, Ndata); 
     } 
     //db.insertRunningP(pName , lastUpdated); 
    } 
    db.close() 
olsun için

ben güç bu kodun tüketmek kontrol edilip, toplam pilin% 3'ten az olduğu şimdi bu en iyi çözümdür için böylece i Cihazınızı rootlamış olsaydınız

+0

statiscs var, bu pil akacak, orada Bunu yapmanın daha iyi bir yolu olmalı. –

+0

@AndreaC 2 saat boyunca bir uygulama kullanırsam, cevabınıza göre lansman sayısı ne olacak? –

1

'u da bulduysanız, ayrıntılı bilgi için /data/system/usagestats/usage-*'daki kullanım istatistikleri dosyalarını da okuyabilirsiniz.

İlgili konular