0

私は最近スレッドを使い始め、Android でのルーパー クラスの Java 実装を完成させようとしています。基本的に、スレッドをキューに入れ、ルーパー クラスによって実行される Java クラスを作成しています。コードの大部分は完成しましたが、タスクのエンキューに問題があります。

Looper クラスでは、宣言されたキューと enqueue メソッドがあります。

List<Runnable> queue;   

public synchronized void enqueue(Runnable runnable) {
    queue.add(runnable);
    notify(); // signal a waiting thread
}

次に、TaskManager という別のクラスを作成して、タスクをキューに追加しました。電話するとエラーが表示されます:

loop.enqueue(new Task());

Task() が runnable を実装し、その run() メソッドで 2 つの整数を一緒に追加するだけの場合...これは単なるテストです。

私が受け取るエラーは次のとおりです。

Exception in thread "Thread-0" java.lang.NullPointerException
at Looper.enqueue(Looper.java:20) (this is the queue.add(runnable))
at TaskMaker.run(TaskMaker.java:16) (this is the loop.enqueue(new Task())

私は明らかに何か間違ったことをしており、これを正しく実装していません...どうすればいいですか? タスクをキューに入れる方法は正しいですか? 助けてくれてありがとう!

4

1 に答える 1

7

キュー変数を初期化していますか?お気に入り:

List<Runnable> queue = new ArrayList<Runnable>();
于 2011-03-08T18:11:31.740 に答える