[英]How to put method into the AsyncTask
你好,我沒什么問題。 我應該如何將該方法放在asyncTask中或在何處,或者可能更好,它應該如何在asyncTask中看起來。
這是我的代碼
public void licz()
{
wyniki.setText("");
N = Integer.parseInt(liczbaN.getText().toString());
tablica = new String [90];
int i=0;
for(licz1=99;licz1>=10;licz1--)
{
for(licz2=10;licz2<=licz1;licz2++)
{
if(N==licz1/licz2 && licz1%licz2==0)
{
String nap1 = Integer.toString(licz1);
String nap2 = Integer.toString(licz2);
napis = (nap1+ " " + nap2 +"\n"); // moj string
lista.add(napis);
tablica[i]=napis;
i++;
wyniki.setText("");
}
}
String listString = "";
for (String s : tablica)
{
listString += s;
}
listString=listString.replaceAll("null", "");
wyniki.setText(listString);
}
}
AsyncTask<Void, String, Void>
。 doInBackground()
。 wyniki.setText(whatever);
與publishProgress(whatever);
onProgressUpdate()
,使用wyniki.setText(progress[0])
; 最后兩個步驟很重要,您無法從后台線程更改UI視圖。
創建一個擴展AsyncTask並覆蓋其doInBackground()方法的新類。 將您的licz()方法放入其中。
實現AsyncTask
類並覆蓋其方法:
private class MyTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
//Put your code here
return "Executed";
}
@Override
protected void onPostExecute(String result) {
//do something after background execution is complete
//Executes on main thread
}
@Override
protected void onPreExecute() {
//do something before background execution starts
//Executes on main thread
}
}
調用new MyTask().execute("");
注意:
更新onPostExecute
與UI相關的更改。
更改您的方法,並使其返回String而不是void
public String licz() {
String result = "";
// do your fancy array stuff
return result;
}
然后創建一個擴展AsyncTask<Void, Void, String>
並在doInBackground()
調用您的方法並返回結果。 比在onPostExecute()
使用結果並更新TextView:
private class MyTask extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
return licz();
}
@Override
protected void onPostExecute(String result) {
wyniki.setText(result);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.