gpt4 book ai didi

android - 如何在预定时间段更新 View

转载 作者:行者123 更新时间:2023-11-29 18:01:29 25 4
gpt4 key购买 nike

谁能告诉我如何在预定的时间段内更新 View 。例如每秒。

MyService.wm.updateViewLayout(mView, mLayoutParams);

我遇到的问题是当我使用一个计时器时它在不同的线程上运行并且它不允许我更新 View 并给出以下错误。

04-08 01:19:35.910: W/dalvikvm(11040): threadid=13: thread exiting with uncaught exception (group=0x40a3e1f8) 04-08 01:19:35.910: E/AndroidRuntime(11040): FATAL EXCEPTION: Thread-1376 04-08 01:19:35.910: E/AndroidRuntime(11040): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 04-08 01:19:35.910: E/AndroidRuntime(11040): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4039) 04-08 01:19:35.910: E/AndroidRuntime(11040): at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:709) 04-08 01:19:35.910: E/AndroidRuntime(11040): at android.view.View.requestLayout(View.java:12680) 04-08 01:19:35.910: E/AndroidRuntime(11040): at android.view.View.setLayoutParams(View.java:8223) 04-08 01:19:35.910: E/AndroidRuntime(11040): at android.view.WindowManagerImpl.updateViewLayout(WindowManagerImpl.java:312) 04-08 01:19:35.910: E/AndroidRuntime(11040): at android.view.WindowManagerImpl$CompatModeWrapper.updateViewLayout(WindowManagerImpl.java:145) 04-08 01:19:35.910: E/AndroidRuntime(11040): at com.example.MyService.UpdateLayers(TrackerService.java:353) 04-08 01:19:35.910: E/AndroidRuntime(11040): at com.example.MainActivity$5$1.run(MainActivity.java:219)

当我尝试从同一个 Activity 或服务更新它时,它挂起并且没有做任何其他事情。只是在循环中运行。

while (true) {
MyService.UpdateLayers();
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

那么,您能否告诉我执行此操作或解决更新图层的正确方法。

最佳答案

您可以尝试使用处理程序。您可以像这样在主线程上定义一个处理程序。-

protected Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg) {
switch(msg.what) {
case DO_SOME_VIEW_CHANGES:
{
// Your logic
break;
}
}
}
};

然后,您需要创建一个线程来接收您的处理程序实例,并在其中调用。-

handler.sendEmptyMessage(DO_SOME_VIEW_CHANGES);

希望对您有所帮助。

关于android - 如何在预定时间段更新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15869677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com