Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从内部类访问变量_Android_Inner Classes_Flow_Control Flow - Fatal编程技术网

Android 从内部类访问变量

Android 从内部类访问变量,android,inner-classes,flow,control-flow,Android,Inner Classes,Flow,Control Flow,我试图访问驻留在我的内部类中的一个变量,我将其作为单独的问题发布,因为我无法理解当前的情况 public class MyActivity extends Activity { static double returnAppSize; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_app_

我试图访问驻留在我的内部类中的一个变量,我将其作为单独的问题发布,因为我无法理解当前的情况

public class MyActivity extends Activity {
  static double returnAppSize;

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_app_breaker_layout);

    try {
        double appSize = getAppSize("com.supercell.clashofclans");
        System.out.println("appSize: " + appSize);

        double appSize3 = getAppSize("com.dotgears.flappybird");
        System.out.println("appSize: " + appSize3);

    } catch (Exception e) {
        e.printStackTrace();
    }
  }
下面是我想从中访问名为“codeSize”的变量的方法

我在这里面临的问题是:

  • onCreate方法中的打印在计算大小之前打印,如何防止此问题是什么导致在计算大小之后打印,以及为什么要将控件较早地传输回调用。(我认为这是主要问题)

  • 如何在全局变量中获取“appSize”的值?我这样做对吗

  • 是什么导致打印在计算之前发生?计算需要时间,因此可能是在不同的线程上计算的,当计算结束时,它会通知您创建的IPackageStatsObserver.Stub,并调用onGetStatsCompleted。当这发生在不同的线程中时,主线程继续并到达返回点returnAppSize;初始值为0.0。这不是问题,这是正常行为

  • 您可以做些什么您可以在活动方法中添加以下内容:

    public void calcDone(int size){
        //printing is here
    }
    
    从内部称之为onGetStatsCompleted。但请记住,如果您想在ui中显示某些内容,请使用RunNuithRead


  • 好的,你得了2分。但是我在RunnuiThread中有一个困惑我如何使用它?在calcDone中写入RunnuiThread{new Runnable(){@Override public void run(){//ui stuff}});如何让系统等待onGetStatsCompleted完成如果让系统等待onGetStatsCompleted完成,则会出现ANR错误。正确的方法是放置一个进度条(旋转圆圈),这样用户就可以了解后台正在运行某些东西。
    public void calcDone(int size){
        //printing is here
    }