监视任务栈中最新打开的程序

import java.util.List;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningTaskInfo;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.SystemClock;

/**
 * 看门狗服务
 * @author Administrator
 *
 */
public class WatchDogService extends Service {
    private boolean isWatch;//是否监控
    private ActivityManager am;
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() {
        am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
        watchDog();//看门狗的逻辑
        super.onCreate();
    }

    private void watchDog(){
        new Thread(){
            public void run() {
                isWatch = true;
                while (isWatch) {
                    //通过isWatch 来控制该线程
                    //时刻监控任务栈
                    List<RunningTaskInfo> runningTasks = am.getRunningTasks(1);//获取最新的任务栈集合
                    RunningTaskInfo runningTaskInfo = runningTasks.get(0);//最新打开的任务栈(不管多少个栈,只看第一个)
                    //任务栈中获取顶部activity
                    String packName = runningTaskInfo.topActivity.getPackageName();
                    System.out.println(packName);

                    SystemClock.sleep(50);//每个50毫秒 狗监控任务栈
                }

            };
        }.start();
    }

    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        isWatch = false;
        super.onDestroy();
    }
}

清单文件中注册服务:

<service android:name="com.lqr.service.WatchDogService"></service>
程序监视本地任务进度时,可以使用Ray状态对象(Ray State Object)记录任务的进度信息,并在Ray Dashboard中展示。具体方法如下: ```python import ray ray.init(dashboard_host='localhost', dashboard_port=8265) # 定义 Ray 状态对象 @ray.remote class ProgressMonitor: def __init__(self, total_num): self.progress = 0 self.total_num = total_num def update(self, step=1): self.progress += step def get_progress(self): return self.progress / self.total_num # 创建 Ray 状态对象 progress_monitor = ProgressMonitor.remote(total_num=100) # 执行任务并更新状态 for i in range(100): # 执行任务 result = ray.remote_func.remote(i) # 更新状态 progress_monitor.update.remote() # 输出任务进度 progress = ray.get(progress_monitor.get_progress.remote()) print("任务进度:%.2f%%" % (progress * 100)) ``` 在上面的例子中,我们定义了一个Ray状态对象`ProgressMonitor`,用于记录任务的进度信息。在任务执行过程中,我们通过调用`update`方法不断更新状态对象的进度信息。最后,通过调用`get_progress`方法获取任务的执行进度,并将进度信息输出到控制台。 同时,我们在程序启动时指定了Ray Dashboard的地址和端口号,可以在浏览器中访问Ray Dashboard,监视任务的执行情况。在Ray Dashboard的面板中,可以看到当前所有节点的CPU、内存使用情况以及任务的执行情况等信息,其中,任务列表中会显示当前正在执行的任务及其进度信息,可以通过查看任务的进度信息,了解任务的执行情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值