无法从异步任务访问变量



我是安卓系统的新手。我花了太多时间来解决这个问题,但没有成功。

所以我有服务Serv.java

public class Serv extends Service {
private String a = "aa";
private String b = "bb";
private String c = "100";
//called by some class.
public void setcc(String s) {
c=s;//c="cc"
}
//Using alarm manager to start the service.
//I call function callMe from OnStart.
void callMe(Context context){ 
//which calls an async task
new VAsyncTask().execute("");
}
private class VerifyCPIAsyncTask  extends AsyncTask<String, Void, Void> {
    protected void onPreExecute() {
    }
    protected Void doInBackground(String... urls) {
    //I am able to access a and b.(aa and bb)
    //but not c.(It still shows 100 and not cc)
    }
    ........
   }

但当我再次运行相同的服务时,它显示了c(cc)的正确值。当我第一次访问时出现了问题。

EDIT-如果我将private字符串c设置为private静态字符串c,则流运行良好。我已经在onCreate和onStartCommand中放了日志。它们不打印变量c的最新值。所以传递(最新的)变量c来预先执行甚至在aysnctask中创建构造函数是没有用的(因为我仍然得到变量c的旧值)。

请帮忙。谢谢

如果不知道你的流在哪里/什么以及如何,很难判断?

您可以重写构造函数并将值作为async任务参数传递。

*

private class VerifyCPIAsyncTask  extends AsyncTask<String, Void, Void>
 {
    int cc
    VerifyCPIAsyncTask (int a) {
       cc= a;
     }
    protected void onPreExecute() {
    }
}*

并将您的异步任务调用为new VAsyncTask(cc).exexecute(");

这是一种更安全的方法。

相关内容

  • 没有找到相关文章

最新更新