2013-01-17 45 views
5

Tôi làm cách nào để có được tổng số lần khởi chạy của tất cả các ứng dụng? Tôi có danh sách đầy đủ các ứng dụng đã cài đặt và tôi có chương trình phát khi ứng dụng được cài đặt nhưng tôi cần số lần khởi chạy của bất kỳ ứng dụng nào. Tôi thấy điều này app với điều này. Bạn có thời gian cpu, thời gian tiền cảnh và số lần khởi chạy ... chúng làm cách nào?phát sóng để có số lần khởi chạy ứng dụng

Trả lời

2

Tôi chưa từng làm điều đó trước đây, nhưng tôi chắc chắn rằng http://developer.android.com/reference/android/app/ActivityManager.html cung cấp thông tin bạn cần.

+0

Với activitymanager bạn không thể có thời gian khởi động .. Có lẽ với số liệu thống kê pin bạn có thể có ... Bạn có bất kỳ ý tưởng nếu ho possibile của nó có một messagge phát sóng khi người dùng Ăn trưa Một ứng dụng? Cảm ơn – AndreaC

+0

Tôi không thấy sao để làm điều đó. – jsmith

+0

nó là không thể, ứng dụng này có statiscs https://play.google.com/store/apps/details?id=com.rootuninstaller.bstatspro&hl=it – AndreaC

3

Cuối cùng tôi làm điều đó! Tôi tạo ra một AlarmManager rằng mỗi phút kiểm tra các ứng dụng đang chạy, nếu một ứng dụng đang chạy (nền hoặc hoạt động) tôi kiểm tra lần cuối cùng mà tôi nhìn thấy nó. nếu thời gian này lớn hơn một phút thì tôi tăng số lượng. Bây giờ tôi đang cố gắng có bao nhiêu dữ liệu mà ứng dụng gửi đến máy chủ bên ngoài, tôi có dữ liệu này, nhưng bạn có biết dữ liệu này là từ ứng dụng của tôi hay khi tôi khởi động điện thoại thông minh?

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

mã này là dành cho có được thời gian đếm

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() 

Tôi đã kiểm tra sức mạnh tiêu thụ của đoạn mã này và ít hơn 3% tổng pin, vì vậy bây giờ đây là giải pháp tốt nhất mà tôi đã tìm thấy

+0

cách rất xấu của nó để làm điều đó, gây ra nó sẽ tiêu hao pin, có nên có một số cách tốt hơn để làm điều này. –

+0

@AndreaC Nếu tôi sử dụng ứng dụng trong 2 giờ, số lượt khởi chạy sẽ được tính theo câu trả lời của bạn –

1

nếu bạn đã root thiết bị của mình, bạn cũng có thể đọc các tệp thống kê sử dụng trong /data/system/usagestats/usage-* để biết thông tin chi tiết.

Các vấn đề liên quan