簡體   English   中英

在靜態方法上獲取異步任務計數始終返回0

[英]Get Count of Async Task on Static Method always return 0

勒芒,在這里大約2個小時是一件很簡單的事情,但是從不返回對象的數量。

我將解釋白色代碼:

DownloadFileAsyncTask.java(是我的異步任務)

在OnPostExecute我做到這一點:

if(customAdapter != null){
    Log.i("solteiroApp","object count is "+customAdapter.getCount());
    ResultActivity.rec_count  = customAdapter.getCount(); // HERE I PASS COUNT
}

ResultActivity.java

public class ResultActivity extends Activity {

    public static int rec_count;
...

問題是:當我在onCreate獲取ResultActivity.rec_count ,始終返回0,但是我將日志顯示為以前的ResultActivity.rec_count

Log.i("solteiroApp","object count is "+customAdapter.getCount());

這將正確返回計數。

我不知道這是因為,如果有人有Sugestio來獲取此計數,請告訴我,我在這里的小時數嘗試返回此計數以顯示在活動中,但如果我再次使用AsyncTask返回,則沒有時間返回我執行的值以前的值,請有人幫我。

1,是否在調用OnPostExecute之前在onCreate中獲得rec_count? 檢查您的代碼2,如果沒有,在rec_count之前添加volatile:public static volatile int rec_count,請嘗試一下,希望對您有所幫助。

您無法做您想做的事。 當Android OS(重新)創建要在其中運行的Context時,Android操作系統將銷毀並重新創建靜態類及其靜態變量。我還(很難地)了解到,單例類不能用於將一個Activity中的數據保存到另一個。

您需要做的是將數據傳遞到其“意圖捆綁包”中的新活動,或者將其保存在SharedPreference中。 為此使用回調接口是個壞主意,因為您希望操作前進到下一個活動,並且(如果需要)允許操作系統銷毀上一個活動。

為下一個活動創建Intent時,可以使用Intent.putExtra(...)方法添加數據以傳遞給新的Activity。 在新的Activity中,使用getIntent()。get * Datatype * Extra(..)方法檢索數據。

我知道了 !

在我的AsyncTask中,我傳遞參數TextView的方式,並在AsyncTask中聲明WeakReference的方式,這是:

public class DownloadFileAsyncTask extends AsyncTask<String,Void,String> {
..
    private WeakReference list=null,count_text=null; // Views i update in my AsyncTask
..

構造函數:

public DownloadFileAsyncTask(View v,Context contextt,View txt) {
    list = new WeakReference(v);
    count_text = new WeakReference(txt);
    this.context = contextt;
}

和onPostExecute:

   ListView l = (ListView) list.get();
   TextView t = (TextView) count_text.get();

   t.setText(customAdapter.getCount()+" objects found");

謝謝大家的幫助,有時是個好消息,有時會出錯,然后回來,新的想法回來了,謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM