【问题标题】:How to optimize android code using Threads如何使用线程优化android代码
【发布时间】:2016-03-07 20:00:27
【问题描述】:

我的Activity 加载大约 3-5 秒(太长)。 如何使用新的Threads 优化我的 OnCreate 方法? 或者这里有其他方法可以优化我的代码?

我尝试创建新的Threads,但在访问Objects 时总是遇到问题,这是在工作Thread 中生成的。

这是我的OnCreate 代码:

  if (getIntent().getBooleanExtra(EXIT_KEY, false)) {
            finish();
        }

        super.onCreate(savedInstanceState);

        if (savedInstanceState != null) {
            mSignInProgress = savedInstanceState
                    .getInt(SAVED_PROGRESS, STATE_DEFAULT);
        }

        // Setting Content View
        setContentView(R.layout.activity_main);

        mClient = buildGoogleApiClient();
        settings = getSharedPreferences(APP_PREFERENCES, MODE_PRIVATE);
        settingsVK = getSharedPreferences(VK_PREFERENCES, MainActivity.MODE_PRIVATE);

// Load Navigation Drawer
        getDrawer(
                settingsVK.getString(VK_INFO_KEY, ""),
                settingsVK.getString(VK_EMAIL_KEY, "")
        );

        if (getIntent().getBooleanExtra(JUST_SIGNED_KEY, false))
            initDialog_share();

        // Get and set system services & Buttons & SharedPreferences & Requests
        inputMethodManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);

        vk_sign_out = (CustomView) findViewById(R.id.vk_sign_out);

        if (!settingsVK.getBoolean(VK_SIGNED_KEY, false)) {
            vk_sign_out.setEnabled(false);
        }

// VK sign out button
        vk_sign_out.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                settings
                        .edit()
                        .putBoolean(SIGNED_IN_KEY, false)
                        .putString(PROFILE_PHOTO_LOCATION_KEY, "")
                        .apply();

                startActivity(new Intent(MainActivity.this, FirstLaunchActivity.class)
                        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));

                finish();
            }
        });

【问题讨论】:

    标签: java android multithreading optimization


    【解决方案1】:

    使用 Android AsyncTasks 执行此类任务,您还可以通过 onPostExecute() 方法访问 UI 视图。
    默认情况下,多个启动的 asyncTasks 按顺序执行,但您可以使用 executeOnExecutor() 以真正并行的方式执行多个独立任务. 尝试在 WWW 上阅读有关 android UI 到非 UI 线程通信的信息。 希望这有助于让您盯着看...

    【讨论】:

      【解决方案2】:

      您应该考虑使用ViewStub - 它充当占位符,并在调用 ViewStub#inflate() 时替换为您的实际布局。如果您的布局很复杂,这将减少您的活动启动时间。您还可以在 onResume() 而不是 onCreate() 中调用任何昂贵的方法来加快速度。

      ViewStub stub = (ViewStub) findViewById(R.id.stub);
      View inflated = stub.inflate();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-27
        • 2020-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-23
        • 1970-01-01
        相关资源
        最近更新 更多