Tag: android handler

7 android有什么问题?

我有服务接收udp datagramm套接字 private void startServer(final UdpServerListener listener) { mStarted = true; mWakeLock.acquire(10 * 60 * 1000L /*10 minutes*/); Looper myLooper = Looper.myLooper(); new HandlerThread(“TcpServerThread”) { @Override protected void onLooperPrepared() { new Handler(getLooper()).post(() -> { try { byte[] data = new byte[8 * 1024]; InetAddress address = BnjUtils.getLocalIpAddress(); DatagramPacket datagramPacket = new DatagramPacket(data, data.length); mServerSocket = […]

发布到UI线程

我想在onCreate创建一个新线程,并使用View上的post与UI线程进行通信。 但是,编辑报表似乎并没有运行。 这是一个小例子: import android.app.Activity import android.os.Bundle import android.widget.TextView import kotlin.concurrent.* import org.jetbrains.anko.* class MainActivity: Activity(), AnkoLogger { protected override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val view = TextView(this) setContentView(view) thread() { info("before post") view.post({ info("inside post") }) info("after post") } } } 看日志,我只能看到before post和after post ,但从来没有inside post 。 我究竟做错了什么?

Android:为什么没有一个静态方法来获得主线程的处理程序?

我是Android开发的新手。 在处理Android中的线程时似乎有两个重要的类: Looper和Handler 。 有静态Looper.myLooper()和Looper.getMainLooper()方法分别获取当前线程的活套和UI线程的活套。 但是, Handler没有这样的静态方法。 例如,如果你想发布到UI线程,代码示例建议这样做: new Handler(Looper.getMainLooper()).post(new Runnable() { … 为什么Handler不公开一个看起来像这样的缓存的静态getMainHandler()方法? 这不会避免造成不必要的垃圾? private static final Handler mainHandler = new Handler(Looper.getMainLooper()); public static Handler getMainHandler() { return mainHandler; }