luk*_*uku 0 user-interface multithreading android android-linearlayout
如何通过另一个线程通过setBackgroundColor()更改LinearLayout的背景?
我了解到,Android UI Framework不是线程安全的,所以你不能通过另一个线程而不是UI线程来更改UI元素.
我的目标是通过调用setBackgroundColor()方法来创建一个频闪灯光效果,该方法在填充整个屏幕的LinearLayout上改变颜色(在这种情况下为黑/白/黑/等).
一种方法是使用 Handler消息队列.您Handler在主UI线程中实例化,然后使用obtainMessage()发送消息到Handler.所以一个例子就像
public final Handler updateTextView = new Handler(){
@Override
public void handleMessage(Message msg)
{
if(msg.what == UPDATE_TEXT){
myTextView.setText("arg1 = " + msg.arg1 +
"; arg2 = " + msg.arg2 + "; " + (String)msg.obj);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在你的主题中你可以调用:
String myString = new String("test");
updateTextView.obtainMessage(UPDATE_TEXT, 10, 20, myString).sendToTarget();
Run Code Online (Sandbox Code Playgroud)
如果调用一次,结果myTextView现在将显示为"arg1 = 10; arg2 = 20; test".