[英]Waiting for an Async task to complete
我有三節課
在我的主要活動(A)中,我正在執行B類的登錄方法。 這些登錄方法運行后,我想打開第二個活動,即C類。由於B類運行C類,我現在無法執行此操作。 我需要它來等待異步任務完成。
有誰知道如何實現這一目標? 我已經搜索過了,從我收集到的信息來看,人們並沒有嘗試使用與我相同的類結構來做這件事,這會使事情有所改變。
謝謝
有誰知道如何實現這一目標?
從B的onPostExecute()
啟動C。
因為B類不會擴展活動
您的AsyncTask
應該由保留的片段管理,因此它可以在配置更改中正常工作。 使AsyncTask
成為該保留片段的常規內部類,因此它可以從onPostExecute()
安全地調用getActivity()
onPostExecute()
,並且可以在其上調用startActivity()
。
如果希望AsyncTask保留在單獨的文件中,則需要在構造函數中獲取Context。 然后,在完成登錄后,您可以啟動活動C。
像這樣:
public class LoginTask extends AsyncTask<Void, Void, Void> {
Context mContext;
public LoginTask(Context ctx) {
mContext = ctx;
}
@Override
protected Void doInBackground(Void... voids) {
// Login here
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
// Start Activity C
Intent intent = new Intent(mContext, ActivityC.class);
mContext.startActivity(intent);
}
}
然后在Activity A中像下面這樣調用AsyncTask:
new LoginTask(this).execute();
使B成為A的內部類,然后從onPostExecute
啟動C。 由於B是A的內部類,因此您將可以訪問A中的所有內容。
在擴展了asynctask的類的postExecute中編寫下一個活動的代碼。
@Override
protected void onPostExecute()
{
//code for changing the current activtiy
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.