我有一个线程和Runnable。在运行中我调用一个函数。 该函数是否会在新线程中执行?还是会在主线程上执行? 和otherFunction(),也将在同一个线程中?
有没有办法调试像这样的场景?
public void startUpload(final Bitmap bitmap){
Thread t = null;
t = new Thread(new Runnable() {
@Override
public void run() {
reduceImg(bitmap, 100);
}
});
t.start();
}
private void reduceImg(Bitmap bitmap, int compressLevel){
ByteArrayOutputStream stream = new ByteArrayOutputStream();
String image_str="" ;
byte [] byte_arr;
try {
bitmap.compress(Bitmap.CompressFormat.JPEG, compressLevel, stream);
byte_arr = stream.toByteArray();
image_str = Base64.encodeToString(byte_arr, Base64.DEFAULT);
Log.e("UploadImg", "OK.. immagine compressa e convertita in stringa");
}catch(Exception e){
}finally{
otherFunction()
}
}
答案 0 :(得分:0)
t.start()
产生一个新线程。 runnable从生成的线程执行。相反,如果你调用t.run();
,则runnable将在主线程的上下文中执行。
使用调试器或只是Log,我可以理解哪个线程执行代码的某些部分吗?
您可以使用Thread.currentThread().getName()
打印当前线程的名称,并为调用t.setName("name");
的线程指定名称。如果您决定使用Logcat进行调试