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

コンストラクターを追加し、アクティビティから 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 に答える