Как бы я реализовал обработчик здесь?

1

У меня есть 2 класса GLLayer и GLCamTest. Я пытаюсь запустить метод, расположенный в GLCamTest...

        public Bitmap extractimage(int pos){
    LocationData tweets;
    tweets = new LocationData(this);
    SQLiteDatabase db = tweets.getWritableDatabase();
    //select the data
    String query = "SELECT * FROM tweets;";
    Cursor mcursor = db.rawQuery(query, null);
    //Move to Position specified.
    mcursor.moveToPosition(pos);

    //get it as a ByteArray
    byte[] imageByteArray=mcursor.getBlob(7);
    //the cursor is not needed anymore
    mcursor.close();

    //convert it back to an image
    ByteArrayInputStream imageStream = new ByteArrayInputStream(imageByteArray);
    Bitmap theImage = BitmapFactory.decodeStream(imageStream);
    return theImage;
    }

Я ищу для запуска в потоке из GLLayer, но из того, что я понимаю, мне нужен обработчик.

            public void run() {
    GLCamTest cam = new GLCamTest();
    image = cam.extractimage(q);

}

Я начинаю тему из public void onDrawFrame(GL10 gl) {, мой вопрос в том, как реализовать этот обработчик? Я читал http://developer.android.com/reference/android/os/Handler.html, но я до сих пор не понимаю, как я его реализую. может кто-нибудь помочь мне?

Теги:
handler

1 ответ

1
Лучший ответ

Две вещи. Во-первых, GLThread никогда не вызывал Looper.prepare(), поэтому вы не можете добавлять/создавать обработчик внутри этого потока. (Должно быть внутри основного потока пользовательского интерфейса).

Два, обработчик не нужен. Если вы просто хотите выполнить код внутри потока рендеринга...

GLSurfaceView mySurface = mMyCustomSurfaceIMadeEarlierWithTheRendererAlreadyAttached;
Runnable myRunnable = mMyRunnableThatIsSomewhere;
mySurface.queueEvent(myRunnable);

Runnable будет выполняться внутри вашего потока рендеринга до того, как метод drawFrame будет вызван в следующий проход рендеринга.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню