Я хочу оптимизировать свой код. Я вижу в своем примере приложение для камеры, создаю поток для takePicture
. Что-то вроде:Создать новую тему или повторно использовать ее с помощью Handler?
WAY 1
private void takePicture() {
mTakePictureThread = new Thread() {
run() {
camera.takePicture(cb, cb, ..);
}
}
mTakePictureThread.start();
}
Теперь я могу делать то же самое с Handler
тоже, как показано ниже:
WAY 2
//consider mTakePictureThread is started in onCreate()
//and mTakePictureHandler is global variable
private void takePicture() {
mTakePictureHandler.sendMessage(1);
}
private class TakePictureThread extends Thread {
@override
public void run() {
Looper.prepare();
mTakePictureHandler = new Handler() {
public void handlerMessage(Message msg) {
int what = msg.what;
switch(what) {
case 1:
camera.takePicture(...);
break;
default:
break;
}
}
}
Looper.loop();
}
}
Учитывая takePicture
называется множество раз. Таким образом, в случае 1 новый поток будет создан столько раз, сколько takePicture называется средством каждый раз, когда будет создан новый поток.
Но во втором случае я всегда могу провести один обработчик и позвонить takePicture
, просто передав сообщение через обработчик.
Так что мой запрос, который лучше, учитывая, что я звоню takePicture
много раз. С точки зрения производительности и памяти.
Я видел людей, использующих WAY 1 всегда (не мог ответить, почему). Так может ли кто-нибудь объяснить плюсы и минусы обоих подходов, и когда я должен следовать этому подходу?
Кто-то проголосовавший должен объяснить причину. Это имеет смысл. – AndroDev