2

这个问题有点难问:

使用 Timer,每 5 秒启动一个方法,在此函数中,我需要知道实际运行的活动,所以我写:

public class ProcessesCheck extends TimerTask {

@Override
public void run() {
   Log.w("hello", "my name is Nicolas".concat( String.valueOf( SystemClock.uptimeMillis() )));
   Context.getPackageManager();
       etc.....
}

}

run 方法每 5 秒运行一次。

但是问题是我没有Context,我什至不能实例化一个my_context对象,为了得到getPackageManager方法。

所以这一行:'Context.getPackageManager();' 有错误!

有人知道如何在“运行”方法中启动 getPackageManager 吗?

谢谢你的帮助

4

2 回答 2

1

大多数时候,这只是getPackageManager()你想要的。从来没有Context.getPackageManager(),因为它不是静态方法。

看起来您ProcessesCheck是一个独立的类,因此您需要为此代码提供一个有效的上下文对象,也许可以通过构造函数传入一个。如果你命名它context,那么你就有了context.getPackageManager()

于 2012-07-03T20:38:40.593 回答
0

最后我做到了,它似乎运作良好。

public class Automated_launcher_service extends Service {

Context my_service = this;

private TimerTask my_TimerTask = new TimerTask() {
    public void run() {
        Log.w("hello", "my name is Nicolas" + String.valueOf( SystemClock.uptimeMillis() ) );
        Object my_packages = my_service.getPackageManager();
        Log.w("hello", "my name is Nicolas" + String.valueOf(my_packages));
    }
};


int i = 0;


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Timer my_timer = new Timer("automated launchemy loop",true);
    if(i==0){
        i=1;
        my_timer.schedule(my_TimerTask, 0, 5000);
    }
    return super.onStartCommand(intent,flags,startId);
}

@Override
public IBinder onBind(Intent intent) {
    return null;
}

}
于 2012-07-03T21:44:22.943 回答