Форум программистов, компьютерный форум CyberForum.ru

Canvas в отдельном потоке капризничает - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Добавление чужих исходников в свой проект в eclipse http://www.cyberforum.ru/android-dev/thread1381835.html
Как использовать связи между проектами?? Допустим у меня есть проект и я хочу добавить в свой проект исходники другого проекта (что бы использовать классы, функции определенные в другом проекте), которые допустим я взял из интернета как это сделать чтоб все было корректно?? Можете рассказать про зависимости между проектами?? Просто если импортировать другой проект или исходники другой библиотеки...
Android Intent на приложения Вконтакте Как в Intent написать ссылку, чтобы в списке приложений, которые могут открывать ссылку появилось приложение Вконтакте? Я использовал ACTION_VIEW на ссылку m.vk.com. Но список показывает только Интернет, Google Chrome. У меня еще есть два приложения которые могут открывать, Вконтакте и KateMobile но их не показывает. Что делать??? http://www.cyberforum.ru/android-dev/thread1381728.html
Android OutOfMemoryError
Всем привет. Ошибка заключается в следующем: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_contact_editor); Drawable dAll = getRepeatingBG(this, R.drawable.main_bg_gauss); View view = this.findViewById(R.id.creatorView).getRootView(); view.setBackgroundDrawable(dAll); ...
Android Не запускается проект
При попытке запустить проект через команду Run As вылетает следующее собщение "No compatible targets were found. Do you wish a new Android Virtual Device? " С чем это связано как исправить ситуацию ?? Подскажите пожалуйста
Android Изменение языка приложения через нажатие кнопки http://www.cyberforum.ru/android-dev/thread1381340.html
Здравствуйте! Есть приложение, в нём есть кнопка "Язык", и я хочу, чтобы по нажатии на кнопку выскакивала менюшка с выбором языка. Как это реализовать? Перевёл string.xml в нужные мне языки, но не могу реализовать выбор языка. Помогите, пожалуйста. В ресурсах (res/) проекта есть папки со значениями для разных языков.
 

Показать сообщение отдельно
rugga
0 / 0 / 0
Регистрация: 10.02.2014
Сообщений: 71

Canvas в отдельном потоке капризничает - Android

24.02.2015, 21:06. Просмотров 296. Ответов 0
Метки (Все метки)

Сразу приведу код, потом опишу в чем проблема:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
DrawThread drawThread;
cotSX cotP=null;
 
protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
 
     surfaceView = (SurfaceView) findViewById(R.id.surfaceView1);
     SurfaceHolder holder = surfaceView.getHolder();
     holder.addCallback(new SurfaceHolder.Callback() {
          @Override
          public void surfaceCreated(SurfaceHolder holder) {
               drawThread = new DrawThread(surfaceView.getHolder());
               drawThread.setRunning(true);
               drawThread.start();
          }
 
          @Override
          public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
          }
 
          @Override
          public void surfaceDestroyed(SurfaceHolder holder) {
          boolean retry = true;
          drawThread.setRunning(false);
               while(retry) {
                    try {
                         drawThread.join();
                         retry = false;
                    } catch (InterruptedException e) { }
               }
          }
     });
}
 
//нажатие button
public void onClickStart(View view) {
     if(cotP==null) {
          cotP = new cotSX();
          cotP.running = true;
          cotP.start();
     }
     else {
          cotP.running = false;
          while(cotP.isAlive()==true);
          cotP = new codecSX();
          cotP.running = true;
          cotP.start();
     }
}
 
class cotSx extends Thread {
     public boolean running = false;
 
     @Override
     public void run() {
          while(running);
     }
}
 
class DrawThread extends Thread {
        private Canvas canvas;
        private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        private SurfaceHolder surfaceHolder;
        private boolean running = false;
 
        public void setRunning(boolean running) {
            this.running = running;
        }
        public DrawThread(SurfaceHolder surfaceHolder) {
            this.surfaceHolder = surfaceHolder;
        }
        @Override
        public void run() {
 
                while(running) {
                        canvas = null;
                        try {
                            canvas = surfaceHolder.lockCanvas(null);
                            if (canvas == null) {continue;}
 
                            canvas.drawColor(Color.GREEN);
                        } finally {
                            if (canvas != null) {
                                surfaceHolder.unlockCanvasAndPost(canvas);
                            }
                        }
                }
        }
}
Мне нужно рисовать на каком-нибудь view. Например SurfaceView, с остальными view (для отображения bitmap) не знаком просто. Рисовать нужно обязательно в отдельном потоке, чтобы не занимать основной. Также нужно запустить еще 3 потока для других действий. Проблема в том, что запуск потока в surfaceCreated и запуск потока в onClickStart приводит к зависанию приложения. При этом запуск только drawThread или запуск только cotP не приводит к зависанию. Если в cotSx вместо while(running); указать while(true); зависаний также нет. Также проверял без drawThread (Surface), создал 3 одинаковых потока типа cotP. Запуск их (3 потока) при нажатии onClickStart не приводит к зависанию. В общем никакой логики, из-за чего он так капризничает. Помогите пожалуйста разобраться! Мне, в общем, нужно в отдельном потоке рисовать, при этом чтобы это не мешало созданию других потоков.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru