繁体   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