gpt4 book ai didi

java - 访问 AsyncTask 中的浮点值

转载 作者:行者123 更新时间:2023-12-02 08:12:41 25 4
gpt4 key购买 nike

这是一个伪代码:

class MoWeFi extends Activity

    static TouchSurfaceView TSV;
static DrawRenderer mRenderer;
static UserInterface mUI;
DownloadData mDD = new DownloadData();
static float zoom = 1.f;

mDD.execute();
mUI = new UserInterface();
setContentView(mUI);

类 UserInterface 扩展 LinearLayout MoWeFi.TSV = new TouchSurfaceView(context); MoWeFi.mRenderer = new DrawRenderer(context); MoWeFi.TSV.setRenderer(MoWeFi.mRenderer); MoWeFi.TSV.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); this.addView(MoWeFi.TSV);

    TextView tv = new TextView(context);
this.addView(tv);

TextView tv2 = new TextView(context);
this.addView(tv2);

DownloadData 类扩展了 AsyncTask protected 无效 doInBackground(){ 做{ this.publishProgress(); 尝试{Thread.sleep(1000);catch(InterruptedException e){} }在运行的时候) } @覆盖 protected 无效 onProgressUpdate(){ //... MoWeFi.TSV.requestRender(); MoWeFi.mUI.tv.setText("zoom="+MoWeFi.zoom);//这是行不通的 !!!始终获得 1.f。 }

类 TouchSurfaceView 扩展了 GLSurfaceView gl.glTranslatef(0, 0, -1.f/MoWeFi.zoom);//它有效!!!

类 DrawRenderer 实现 GLSurfaceView.Renderer //捏拉缩放 ... MoWeFi.zoom *= detector.getScaleFactor(); MoWeFi.zoom = Math.max(0.5f, Math.min(MoWeFi.zoom, 5.0f));

MoWeFi.mUI.tv2.setText("zoom="+MoWeFi.zoom);//有用 !!!

所以没有任何错误。只是无法在任何地方访问我的缩放变量。我是 Java 新手,我肯定错过了重要的概念。

编辑在第一行添加 float

编辑2在asyncTask中添加publishProgress

编辑 3 logcat 不显示任何内容

最佳答案

您确定您的 AsyncTask 在值更改后访问该属性吗?如果是,AsyncTask 在单独的线程上运行代码,因此您可能面临竞争条件,即一个线程中更新的值在另一个线程中尚不可用。尝试使 zoom 属性变得易失:

 public static volatile float zoom = 1.f;

或者使用同步的 get/set 方法来改变和访问属性。

关于java - 访问 AsyncTask 中的浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7105412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com