我从登录屏幕获取用户名。我想调用Web服务来验证用户。问题是我收到了错误:
Magento\CatalogInventory\Model\StockRegistry::updateStockItemBySku
我知道为什么我会得到它。我正在主线程上进行网络通话。
问题在于我不想使用android.os.NetworkOnMainThreadException
。我不希望用户能够登录之前我收到了来自网络服务的回复。
我该如何解决这个问题?
答案 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();