49 lines
1.3 KiB
C
49 lines
1.3 KiB
C
|
// Copyright 2013 The Chromium Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
#ifndef BASE_THREADING_JAVA_THREAD_H_
|
||
|
#define BASE_THREADING_JAVA_THREAD_H_
|
||
|
|
||
|
#include <jni.h>
|
||
|
|
||
|
#include "base/android/scoped_java_ref.h"
|
||
|
#include "base/memory/scoped_ptr.h"
|
||
|
|
||
|
namespace base {
|
||
|
|
||
|
class MessageLoop;
|
||
|
class WaitableEvent;
|
||
|
|
||
|
namespace android {
|
||
|
|
||
|
// A Java Thread with a native message loop. To run tasks, post them
|
||
|
// to the message loop and they will be scheduled along with Java tasks
|
||
|
// on the thread.
|
||
|
// This is useful for callbacks where the receiver expects a thread
|
||
|
// with a prepared Looper.
|
||
|
class BASE_EXPORT JavaHandlerThread {
|
||
|
public:
|
||
|
JavaHandlerThread(const char* name);
|
||
|
virtual ~JavaHandlerThread();
|
||
|
|
||
|
base::MessageLoop* message_loop() const { return message_loop_.get(); }
|
||
|
void Start();
|
||
|
void Stop();
|
||
|
|
||
|
// Called from java on the newly created thread.
|
||
|
// Start() will not return before this methods has finished.
|
||
|
void InitializeThread(JNIEnv* env, jobject obj, jint event);
|
||
|
|
||
|
static bool RegisterBindings(JNIEnv* env);
|
||
|
|
||
|
private:
|
||
|
scoped_ptr<base::MessageLoop> message_loop_;
|
||
|
ScopedJavaGlobalRef<jobject> java_thread_;
|
||
|
};
|
||
|
|
||
|
} // namespace android
|
||
|
} // namespace base
|
||
|
|
||
|
#endif // BASE_THREADING_JAVA_THREAD_H_
|