Форум программистов, компьютерный форум 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 VideoView: "Не удалось воспроизвести видео" Программирование Android
Можете подсказать. Может я, что то не правильно сделал. main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android: layout_width="match_parent" android: layout_height="match_parent" android: paddingBottom="@dimen/activity_vertical_margin"
Bluetooth (чтоб его.) Программирование Android
доброго всем дня! взываю к всезнающему ALL.. задача: есть (делается) софтинка, которая: 1. включает блютус (пусть с подтверждением юзера, не важно) 2. открывает серверный БТсокет 3. периодически слушает эфир на предмет обнаружения новых девайсов (в нашем случае телефоны\планшеты) 4. при нахождении новичка пытается соединиться с _такой-же_ программой на нем для обмена данными Все бы...
Программирование Android OutOfMemoryError http://www.cyberforum.ru/android-dev/thread1381666.html
Всем привет. Ошибка заключается в следующем: 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? " С чем это связано как исправить ситуацию ?? Подскажите пожалуйста подробнее

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

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

24.02.2015, 21:06. Просмотров 307. Ответов 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 не приводит к зависанию. В общем никакой логики, из-за чего он так капризничает. Помогите пожалуйста разобраться! Мне, в общем, нужно в отдельном потоке рисовать, при этом чтобы это не мешало созданию других потоков.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru