小编Ric*_*ich的帖子

Android:为什么Handlers发布了runnable?

有人可以解释为什么Handlers发布了一个可运行的?重写handleMessage和发送消息是否也做同样的事情?

我写了一些未经测试的代码来说明我认为这两种方法的实现方式.如果我的方法错了,请纠正我.

邮政处理程序:

handler.post(new Runnable() {
    @Override
    public void run() {
        imageView.doSomething();
    }
 });
Run Code Online (Sandbox Code Playgroud)

handleMessage处理程序:

final Handler handler = new Handler() {
     @Override
     public void handleMessage(Message message) {
         imageView.doSomething();
     }
 };

handler.sendMessage(message);
Run Code Online (Sandbox Code Playgroud)

android android-handler

14
推荐指数
1
解决办法
8491
查看次数

为什么使用Messenger而不是将引用传递给Handler?

我有一个主要的活动和约束服务.绑定服务从网络接收命令,该命令触发将消息发送到主活动中的处理程序.通过传递Handler对服务的引用,我得到了一切.然后......我偶然发现了一个叫做Messenger的东西.

Messenger:引用Handler,其他人可以使用它向其发送消息.这允许跨进程实现基于消息的通信,方法是在一个进程中创建指向Handler的Messenger,并将该Messenger交给另一个进程.

这引发了一些问题:

  • 术语过程是否意味着我不需要使用Messenger,除非我根据Process和Thread 指南生成一个单独的过程?
  • 使用Messenger总是好的做法吗?
  • 通过对Handler的引用通常是个坏主意吗?

android android-service android-handler

13
推荐指数
1
解决办法
3124
查看次数

Android:如何使用Handler handleMessage并访问对MainActivity的引用

我有一个服务,它从Internet接收命令并启动后台线程.该线程从服务传递一个处理程序(服务有界并传递处理程序)并向处理程序发送消息以拍照.我坚持执行处理程序.

static Handler handler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            //TODO: Handle different types of messages
            mCamera.takePicture(null, null, MainActivity.this);
        }
};
Run Code Online (Sandbox Code Playgroud)

问题:

  • Handler需要是静态的吗?没有静态,我得到"这个Handler类应该是静态的,否则可能会发生泄漏"
  • mCamera需要静态吗?我被告知要使mCamera静止,但为什么这是必要的?有没有办法在不使mCamera静态的情况下设置takePicture?
  • 将引用传递给MainActivity的正确方法是什么?现在我收到错误:"在范围内无法访问MainActivity类型的封闭实例"

android android-handler

8
推荐指数
1
解决办法
3万
查看次数

Wifi Direct 是否支持用于 P2P 的网状/树状拓扑结构,还是仅支持具有多个客户端的一个接入点?

我目前正在 WiFi Direct 上阅读 Android 文档。我知道一个 WiFi Direct 接入点可以有多个客户端,但 WiFi Direct 可以支持树形或网状拓扑吗?例如,如果我有一个会议厅,每个人都打开手机,我是否可以从节点 1 向节点 n 发送数据,即使两个节点相距 k 个分支?

android-wifi wifi-direct

5
推荐指数
0
解决办法
434
查看次数

HTML5 Safari iOS 只能访问相机而不是照片库

<input type="file" capture="camera" accept="image/*">允许移动浏览器拍照。在 Android 原生浏览器和 chrome 上,单击输入按钮可立即启动相机。在 iOS Safari 上,该按钮会发出警报,要求“拍照”或从“照片库”中进行选择。如何立即启动本机相机?

html html-input mobile-safari html5-video ios

5
推荐指数
1
解决办法
4152
查看次数