Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中处理程序的post()和sendMessage()有什么区别_Android - Fatal编程技术网

android中处理程序的post()和sendMessage()有什么区别

android中处理程序的post()和sendMessage()有什么区别,android,Android,我发现post()和sendMessage() Post()− 它将把消息从后台线程发布到主线程 线程使用活套 sendmessage()− 如果您想组织发送到ui的内容 (来自后台线程的消息)或ui函数。你应该使用 sendMessage() 问题:Post()很清楚,我们将一些内容从后台线程发布到主线程。但是sendMessage()有什么不同呢post()和sendMessage()在内部的工作方式是相同的,但是对于sendMessage(),我们可以传递一个消息对象 示例 使用post:

我发现
post()
sendMessage()

  • Post()− 它将把消息从后台线程发布到主线程 线程使用活套
  • sendmessage()− 如果您想组织发送到ui的内容 (来自后台线程的消息)或ui函数。你应该使用 sendMessage()
  • 问题:Post()很清楚,我们将一些内容从后台线程发布到主线程。但是sendMessage()有什么不同呢
    post()
    sendMessage()
    在内部的工作方式是相同的,但是对于
    sendMessage()
    ,我们可以传递一个消息对象

    示例
    使用post:
    使用sendMessage
    post()
    sendMessage()
    在内部的工作方式相同,但是对于
    sendMessage()
    ,我们可以传递消息对象

    示例
    使用post:
    使用sendMessage
    sendMessage
    发送一个
    Message
    对象,通过该对象可以检查
    handleMessage
    内部的操作。它还有一个带有延迟的变量,比如Post..
    sendMessage
    发送一个
    Message
    对象,您可以通过该对象检查在
    handleMessage
    中执行的操作。它还有一个类似于Post的延迟变体。。
    public class MainActivity extends AppCompatActivity {
        Handler mHandler = new Handler();
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Toolbar toolbar = findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
    
            FloatingActionButton fab = findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Snackbar.make(view, "Handler Started", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();
    
                    initHandler();
                }
            });
        }
    
        private void initHandler() {
    
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try{
    
                        mHandler.post(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(MainActivity.this,"Executed in background thread",Toast.LENGTH_LONG).show();
                            }
                        });
                    }catch(Exception ex){
                        ex.printStackTrace();
                        Toast.makeText(MainActivity.this,ex.getMessage(),Toast.LENGTH_LONG).show();
                    }
                }
            }).start();
        }
    
    
    }
    
    public class MainActivity extends AppCompatActivity {
        IncomingHandler msgHandler;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Toolbar toolbar = findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            msgHandler = new IncomingHandler(MainActivity.this);
            FloatingActionButton fab = findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Snackbar.make(view, "Handler Started", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();
    
                    initHandler();
                }
            });
        }
    
        private void initHandler() {
    
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try{
                        Message msg = msgHandler.obtainMessage();
                        Bundle bundle = new Bundle();
                        bundle.putString("MSG_KEY", "Executed in background thread");
                        msg.setData(bundle);
                        msgHandler.sendMessage(msg);
                    }catch(Exception ex){
                        ex.printStackTrace();
                        Toast.makeText(MainActivity.this,ex.getMessage(),Toast.LENGTH_LONG).show();
                    }
                }
            }).start();
        }
    
        private static class IncomingHandler extends Handler{
    
            Handler mHandler = new Handler();
            Context context;
    
            public IncomingHandler(Context context) {
                this.context = context;
            }
    
            @Override
            public void handleMessage(@NonNull final Message msg) {
                super.handleMessage(msg);
                Bundle bundle = msg.getData();
                final String displayMessage = bundle.getString("MSG_KEY");
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(context ,displayMessage,Toast.LENGTH_LONG).show();
                    }
                });
            }
        }
    
    
    }