Android登录以及如何进行网络阻止呼叫

时间:2015-11-24 15:25:20

标签: android android-asynctask android-networking

我从登录屏幕获取用户名。我想调用Web服务来验证用户。问题是我收到了错误:

Magento\CatalogInventory\Model\StockRegistry::updateStockItemBySku

我知道为什么我会得到它。我正在主线程上进行网络通话。

问题在于我不想使用android.os.NetworkOnMainThreadException。我不希望用户能够登录之前我收到了来自网络服务的回复。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

当用户打开第一个Activity并使用“Waiting”片段时,您可以启动AsyncTask。当AsyncTask完成后,您可以切换到“登录”片段。

答案 1 :(得分:0)

如果您从网络服务获得回复,您可以使用AsyncTask,如下所示登录。

class SignInAsyncTask extends AsyncTask<Void, Void, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        // Display a progress bar saying signing in or something
    }

    @Override
    protected String doInBackground(Void... params) {
        // Call your web service
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        // Sign in if the credentials are okay, otherwise show some error message to the user
    }
}

如果你真的不想使用AsyncTask,你可以开始一个新线程并将你的逻辑放在这里。

new Thread(new Runnable() {

    public void run() {
        // Sign in validation
    }
}).start();