Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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中为每个按钮启动的每个活动创建一个单独的线程。可能吗?怎么可能呢?_Android_Multithreading_Button_Android Activity - Fatal编程技术网

我想在Android中为每个按钮启动的每个活动创建一个单独的线程。可能吗?怎么可能呢?

我想在Android中为每个按钮启动的每个活动创建一个单独的线程。可能吗?怎么可能呢?,android,multithreading,button,android-activity,Android,Multithreading,Button,Android Activity,这是一段代码,我想在其中为每个目的插入线程 首先,您不应该从单独的线程执行此类操作,您应该始终从主线程执行UI操作(并且您的onClick方法在主线程上执行)或者(如果您使用单独的线程)-将此函数包装在runOnUIThread调用中,它将导致在主线程上执行startActivity/startActivityForResult。你知道为什么你需要一个单独的线程吗?startActivity/startActivityForResult是异步调用,因此它们不会阻止您的代码。所有活动都在单个主线程

这是一段代码,我想在其中为每个目的插入线程


首先,您不应该从单独的线程执行此类操作,您应该始终从主线程执行UI操作(并且您的onClick方法在主线程上执行)或者(如果您使用单独的线程)-将此函数包装在runOnUIThread调用中,它将导致在主线程上执行startActivity/startActivityForResult。你知道为什么你需要一个单独的线程吗?startActivity/startActivityForResult是异步调用,因此它们不会阻止您的代码。

所有活动都在单个主线程上运行,该线程由系统而不是您设置。但是,您可以在活动中自由创建自己的线程并在其中运行一些代码。

Android
执行您的程序时,您将从一个线程开始,即UI线程。这是唯一一个可以与android系统服务通信的应用程序,告诉你它应该做什么,什么时候做,如何做

当您创建一个新的活动时,您不会创建一个新的线程,您只需添加到现有的线程上

有时我们需要运行可能需要很长时间才能执行的操作,并且需要在单独的线程上操作,我们可以这样做:

new Thread(){
    public void run(){
        while(true){
            //do stuff
        }
    }
}.start();
线程将单独运行,不会导致应用程序出错

此线程将继续运行,直到它因完成任务而终止,或被终止,但是,如果启动新活动,您可能会失去对它的访问,或错过回调,有时您需要一个线程运行一段时间,并在整个系统中访问它,这是它的最佳用途,也是您的问题,听起来您想使用
服务

服务是一个应用程序组件,表示应用程序希望执行更长时间运行的操作

new Thread(){
    public void run(){
        while(true){
            //do stuff
        }
    }
}.start();