Java 如何在Android的另一个线程中运行方法?

Java 如何在Android的另一个线程中运行方法?,java,android,multithreading,user-interface,methods,Java,Android,Multithreading,User Interface,Methods,我在Android中有一个MainActivity类,它加载第一个屏幕。启动时,我需要在另一个线程中运行另一个方法,然后显示消息或转到另一个屏幕。让UI不挂起。 如何做到这一点?代码在哪个位置 //更新代码 import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.app.Activity; import android.cont

我在Android中有一个MainActivity类,它加载第一个屏幕。启动时,我需要在另一个线程中运行另一个方法,然后显示消息或转到另一个屏幕。让UI不挂起。 如何做到这一点?代码在哪个位置

//更新代码

import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;

import android.view.Menu;
import android.widget.Toast;


public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //Context context=getApplicationContext();
    String Internet=String.valueOf(isNetworkAvailable(this));
    Toast toast = Toast.makeText(this, Internet, Toast.LENGTH_SHORT);
    toast.show();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public static boolean isNetworkAvailable(Context context) 
{
    return ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo() != null;
}

}

您可以选择Java路线并使用普通线程。但是,请注意,您需要一个位于Android SDK中的类来将您的更改传播到UI。
更像安卓系统的方式将是一种全新的方式。它专为必须与UI并行运行的任务而设计,并提供了一种回调UI的机制,因此您不必亲自实现,如果您决定选择furst选项,您可以使用Java路径并使用普通线程。但是,请注意,您需要一个位于Android SDK中的类来将您的更改传播到UI。
更像安卓系统的方式将是一种全新的方式。它专为必须与UI并行运行的任务而设计,并提供了一种回调UI的机制,因此您不必亲自实现,如果您决定选择furst选项,您将如何处理处理处理程序。

AsyncTask可能会帮助您:您可以使用thread或AsyncTask。您需要更具体。@Raghunandan-不,它们不需要更具体,因为两种解决方案都可以很好地工作。@Raghunandan-服务本身不是解决方案,因为服务不会自动暗示不同的线程,当然,服务可以显式编写,以便使用后台线程。Romiox的回答中已经提到使用处理程序进行UI更新,DigCamara也提到了runOnUiThread选项。@ChrisStratton是的。您将有一个服务的创建线程。我删除了之前的评论,因为我刚刚意识到您所说的。AsyncTask可能会帮助您:您可以使用thread或AsyncTask。您需要更具体。@Raghunandan-不,它们不需要更具体,因为两种解决方案都可以很好地工作。@Raghunandan-服务本身不是解决方案,因为服务不会自动暗示不同的线程,当然,服务可以显式编写,以便使用后台线程。Romiox的回答中已经提到使用处理程序进行UI更新,DigCamara也提到了runOnUiThread选项。@ChrisStratton是的。您将有一个服务的创建线程。我删除了我之前的评论,因为我刚刚意识到你所说的。你也可以使用runOnUiThread将你的更改传播到UI。现在我首先尝试在onCreate方法中检查连接的结果:String Internet=String.valueOfthis.isNetworkConnected;Toast Toast=Toast.makeTextgetApplicationContext,Internet,Toast.LENGTH\u SHORT;吐司.表演;但它会停止应用程序。如何在这里正确调用isNetworkConnected方法?现在代码已更新。我已经更新了Internet检查方法的名称和实现。@user2543953是否在清单中执行此操作?@user2543953也检查此操作您可以使用runOnUiThread将您的更改传播到UI。现在我首先尝试在onCreate方法中检查连接的结果:String Internet=String.valueOfthis.isNetworkConnected;Toast Toast=Toast.makeTextgetApplicationContext,Internet,Toast.LENGTH\u SHORT;吐司.表演;但它会停止应用程序。如何在这里正确调用isNetworkConnected方法?现在代码已更新。我已更新了Internet检查方法名称和实现。@user2543953是否在清单中执行此操作?@user2543953也检查此操作