Как запустить действие из не-пользовательского потока (из потока рисования вида поверхности) - PullRequest
2 голосов
/ 10 марта 2012

Я разрабатываю игру для Android, которая использует представление поверхности для представления пользовательской графики. Мне нужно реализовать метод, чтобы начать другое действие, если пользователь касается определенной области. для этого я передаю текущий экземпляр основного (переднего плана) вида деятельности на поверхность

Я могу легко справиться с касанием, но не могу запустить действие с полученного экземпляра.

**> если я вызываю метод startActivity из полученного экземпляра

текущая активность Исключения происходят, когда говорится, что это вызов из не щ-нить **

Я использую класс, расширенный до представления поверхности и переданный потоку, который рисует на холсте

Ответы [ 3 ]

3 голосов
/ 10 марта 2012

Находится ли SurfaceView в действии?Если это так, используйте

runOnUiThread(new Runnable() {
  public void run() {
    //startActivity
  }
});

Если вы не находитесь внутри действия, вам действительно не следует начинать другие действия.

Также SurfaceView имеет методы post и postDelayed, которые можно использовать дляопубликовать Runnables в потоке пользовательского интерфейса.

  post(new Runnable() {
       public void run() {
         //startActivity
       }

   });
1 голос
/ 26 сентября 2012

Вы можете использовать:

// from MySurfaceView/Activity
Context context = getContext(); 

//EffectingActivity is another activity
Intent intent = new Intent(context, EffectingActivity.class); 
context.startActivity(intent);
1 голос
/ 10 марта 2012

Я думаю, вы можете сделать это ...

 runOnUiThread(new Runnable() {
                     public void run() {


           // start your activity here


                    }
                });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...