这个问题有点难以问:
使用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.....
}
}
运行方法每5秒运行一次。
但问题是我没有Context,我甚至无法实例化my_context对象,以获取方法getPackageManager。
所以行:'Context.getPackageManager();'有错误!
有人知道如何在“run”方法中启动getPackageManager吗?
感谢您的帮助
答案 0 :(得分:1)
大多数情况下,你想要的只是getPackageManager()
。它永远不会是Context.getPackageManager()
,因为它不是静态方法。
看起来你的ProcessesCheck
是一个独立的类,所以你需要为这段代码提供一个有效的上下文对象,可能是通过构造函数传递一个。如果您将其命名为context
,那么您将拥有context.getPackageManager()
。
答案 1 :(得分: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;
}
}