如何在Android中获取应用程序的开始时间

时间:2014-03-18 06:17:40

标签: android time

我创建了一个Android应用程序,我必须创建一个关于在后台运行的应用程序的通知,我会成功获得正在运行的应用程序,但无法生成应用程序运行的时间长度。例如 - > Talking Tom从最近3个小时开始运行等。

公共类ListAdapter扩展了ArrayAdapter {

// List context
private final Context context;

// List values
private final List<RunningAppProcessInfo> values;

public ListAdapter(Context context, List<RunningAppProcessInfo> values) {
    super(context, R.layout.activity_main, values);
    this.context = context;
    this.values = values;
}

/**
 * Constructing list element view
 */
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    long re = MainActivity.recived;
    long sd = MainActivity.send;
    System.out.println("hii");
    long po=MainActivity.pos;
/*    if(position!=po)
        return null;   */
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View rowView = inflater.inflate(R.layout.activity_main, parent, false);

    TextView appName = (TextView) rowView.findViewById(R.id.appNameText);
    appName.setText(values.get(position).processName);

    TextView sendtxt = (TextView) rowView.findViewById(R.id.sendtv);
    sendtxt.setText(String.valueOf(re/1024));

  //  sendtxt.setText(b1.getString("passed2"));
    TextView receivetxt = (TextView) rowView.findViewById(R.id.receivetv);
    receivetxt.setText(String.valueOf(sd/1024));

  //  receivetxt.setText(b1.getString("passed1"));

    return rowView;

}  

}

我的第二类是: - &gt;

公共类ApplicationAdapter扩展了ArrayAdapter {

 private List<ApplicationInfo> appsList = null;
    private Context context;
    private PackageManager packageManager;

    public ApplicationAdapter(Context context, int textViewResourceId,
            List<ApplicationInfo> appsList) {
        super(context, textViewResourceId, appsList);
        this.context = context;
        this.appsList = appsList;
        packageManager = context.getPackageManager();
    }

    @Override
    public int getCount() {
        return ((null != appsList) ? appsList.size() : 0);
    }

    @Override
    public ApplicationInfo getItem(int position) {
        return ((null != appsList) ? appsList.get(position) : null);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (null == view) {
            LayoutInflater layoutInflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = layoutInflater.inflate(R.layout.snippet, null);
        }

        ApplicationInfo data = appsList.get(position);
        if (null != data) {
            TextView appName = (TextView) view.findViewById(R.id.app_name);
            TextView packageName = (TextView) view.findViewById(R.id.app_paackage);
            ImageView iconview = (ImageView) view.findViewById(R.id.app_icon);

            appName.setText(data.loadLabel(packageManager));
            packageName.setText(data.packageName);
            iconview.setImageDrawable(data.loadIcon(packageManager));
        }
        return view;
    }
};

2 个答案:

答案 0 :(得分:1)

<强> EDITED

您可以使用ActivityManager.RunningServiceInfo.activeSince获取每个服务的开始时间列表,描述为here。这是一个片段,用于检索所有服务进程的时间。

 ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
 List<ActivityManager.RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE);

 long currentMillis = Calendar.getInstance().getTimeInMillis();        
 Calendar cal = Calendar.getInstance();

 for (ActivityManager.RunningServiceInfo info : services) {
     cal.setTimeInMillis(currentMillis-info.activeSince);

     Log.i(TAG, String.format("Process %s with component %s has been running since %s (%d milliseconds)",
             info.process, info.service.getClassName(), cal.getTime().toString(), info.activeSince));
 }

答案 1 :(得分:1)

     //   get time value of all the processes (in Milliseconds)     

   long millisSinceBoot = SystemClock.elapsedRealtime();
    long time = ((millisSinceBoot - values.get(position).activeSince)/1000); 
    //Log.i("HRHHRHRHRHR", "%%%%%%%%%%%%%%%%"+time);
    String time1 = String.valueOf(time);
    time_list.add(time);
    int seconds = (int) (time / 1000) % 60 ;
    int minutes = (int) ((time / (1000*60)) % 60);
    int hours   = (int) ((time / (1000*60*60)) % 24);
    String time11 = hours+":"+minutes+":"+seconds;
    Log.i("Time", "Secs:- "+seconds+" "+"Mins:- "+minutes+" "+"Hours:- "+hours);
    timer.setText(time1);