2012-02-26 4 views
0

최근에 시작된 앱을 모니터링하는 애플리케이션을 작성 중입니다. 각 앱이 시작된 횟수를 테스트합니다. 이를 위해최근 앱이 언제 시작되었는지 알 수 있습니까?

내가 사용하고 있습니다 :

final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
final List<RecentTaskInfo> recentTasks = activityManager.getRecentTasks(20,ActivityManager.RECENT_WITH_EXCLUDED); 

for (int i = 0; i < recentTasks.size(); i++) { 
Intent baseIntent = recentTasks.get(i).baseIntent; 
if(baseIntent != null) { 

Log.d("Text", "Application executed: " + i + ": baseIntent: " + baseIntent.getComponent().getPackageName() + baseIntent.getComponent().getClassName()); 

     } 

문제는 충분하지 않은 것입니다. 앱이 3 번 시작하면 나는 한 번만 가져올 것이기 때문입니다.

앱이 언제 시작되었는지 알아야합니다.

답변

0

하나의 옵션은 logcat 에서 로그를 읽는 것입니다. 활동이 시작될 때마다 쉽게 찾을 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 예, 알고 있습니다. 이것은 이전에 구현 된 방법입니다. 그 문제는 그 무거운 독서가 몇 시간의 로그 일 것입니다. 로그가 한 장치에서 다른 장치로 다르며 이후 버전에서 변경 될 수도 있습니다. – ZiviMagic

1

2 년 후 게시 :하지만 그 경우에는 유용합니다. 여기를 확인하십시오. 모든 현재 실행중인 응용 프로그램을 포함하는 목록 taskinfo 를 사용

Android how to know an app has been started and range apps priority according the starting times

, 당신은 아마 에 대해 공유 환경 설정에서 추적하려는 각 응용 프로그램을 수를 유지할 수 있습니다. 따라서 최근 앱을 모니터링하고 시작할 수 있습니다.

0
package com.example.sample; 

import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

import android.app.Activity; 
import android.app.ActivityManager; 
import android.app.ActivityManager.RecentTaskInfo; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final ArrayList<String> al = new ArrayList<String>(); 
     Context context = this.getApplicationContext(); 
     ActivityManager mgr = (ActivityManager)context.getSystemService(ACTIVITY_SERVICE); 
     List<ActivityManager.RecentTaskInfo> recentTasks = mgr.getRecentTasks(100,ActivityManager.RECENT_WITH_EXCLUDED); 
     for(Iterator i = recentTasks.iterator(); i.hasNext();) 
      { 
      RecentTaskInfo p = (RecentTaskInfo)i.next();  
     String output=p.baseIntent.getComponent().getPackageName(); 
       al.add(output); 
      } 

     Button button1=(Button) findViewById(R.id.button1); 
     button1.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) { 
        // write on SD card file data in the text box 
       try { 

        Log.e("DEBUG", "Recently started tasks"); 
        FileWriter outFile = new FileWriter("/sdcard/sdcard/Notes/task.txt"); 
        BufferedWriter outStream = new BufferedWriter(outFile); 
        for (int k = 0; k < al.size(); k++) 
        { 
         outStream.write(al.get(k)); 
        outStream.write("\n"); 

        } 
        outStream.close(); 
        // System.out.println("Data saved."); 
       } 

     //outStream.write(output); 
     //al.add 
         //outStream.write("\n"); 

              // outStream.close(); 



     catch (Exception e) { 
        Toast.makeText(getBaseContext(), e.getMessage(), 
          Toast.LENGTH_SHORT).show(); 
       } 
       }// onClick 
      }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    }} 
관련 문제