Android 查看手机中所有进程

  真机测试的时候发现DDMS对进程的显示很不给力,一些进程管理工具又不显示包名。

  所以就自己写了一个小程序,查看自己手机中的进程,显示当前时间和进程的包名:

  程序运行截图:

  布局:

复制代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/updateBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Update ProcessInfos" />

    <TextView
        android:id="@+id/time"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:textStyle="bold" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="16sp" 
            android:padding="5dp"/>
    </ScrollView>

</LinearLayout>
复制代码

  主要代码:

复制代码
package com.example.helloprocess;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class HelloProcessActivity extends Activity
{
    private TextView mTextView = null;
    private TextView mTime = null;
    private Button mButton = null;
    private String mText = "";

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hello_process);

        mTextView = (TextView) findViewById(R.id.text);
        mTime = (TextView) findViewById(R.id.time);
        mButton = (Button) findViewById(R.id.updateBtn);

        mButton.setOnClickListener(new View.OnClickListener()
        {

            @Override
            public void onClick(View v)
            {
                updateProcessInfo();
            }
        });

    }

    private void updateProcessInfo()
    {
        mText = "";
        mTextView.setText(mText);

        // 获取ActivityManager
        ActivityManager activityManager = (ActivityManager) this
                .getSystemService(Context.ACTIVITY_SERVICE);

        // 更新时间
        updateTimeInfo();

        // 获取进程信息***************************************************
        List<RunningAppProcessInfo> infos = activityManager
                .getRunningAppProcesses();

        for (RunningAppProcessInfo info : infos)
        {
            String name = info.processName;

            mText = mTextView.getText().toString();
            mText += name + "\n\n";
            mTextView.setText(mText);

        }

    }

    private void updateTimeInfo()
    {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式
        String time = df.format(new Date());
        System.out.println(time);// new Date()为获取当前系统时间

        mTime.setText(time);

    }

}
复制代码

 

 

posted @   圣骑士wind  阅读(13669)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示