0

我有一个运行很长时间的应用程序。我正在使用 AsyncTask 类来实现它。但是当手机休眠时,异步任务会自动停止。为了停止这种行为,我想在 doInBackgound 启动时实现部分唤醒锁,并在它结束时释放它。

但是,当我在 doInBackground 方法中粘贴以下代码时,getSystemService 会给出错误,即它对于 myclass 类型未定义。

        PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);

你能给我一个解决方法吗..

我想做的是..

class doit extends AsyncTask<String, String , Void>
{
@Override
protected Void doInBackground(String... params) 
{
//Achieve Partial Wakelock
//Do long Work
//Release Lock
}
}
4

2 回答 2

1

添加一个构造函数并从 Activity 传递 Context 对象

Context context;
doit(Context mContext){
    super();
    context = mContext;
}

然后使用

    PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
于 2012-09-17T18:03:38.777 回答
1
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);

行不通,因为getSystemService()不是AsyncTask. 您需要将您的应用程序Context对象传递给您AsyncTask,然后执行以下操作,因为getSystemService()它是Context.

PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
于 2012-09-17T18:04:24.147 回答