有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用线程优化安卓代码

我的Activity加载约3-5秒(太长)。 如何使用newThreads优化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();
            }
        });

共 (2) 个答案

  1. # 1 楼答案

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

    ViewStub stub = (ViewStub) findViewById(R.id.stub);
    View inflated = stub.inflate();
    
  2. # 2 楼答案

    使用Android AsyncTasks来执行这样的任务,您还可以使用这些任务在onPostExecute()方法中访问UI视图
    默认情况下,多个已启动的异步任务按顺序执行,但您可以使用executeOnExecutor()以真正并行的方式执行多个独立任务。 尝试在WWW上阅读关于android用户界面到非用户界面线程通信的内容。 希望这有助于让你目瞪口呆