如何减少主线程的负载?

时间:2018-06-03 13:43:04

标签: android

我是Android开发的新手。我正在开发一个应用程序,它在打开时运行缓慢,并且logcat显示"跳过55帧。 UI线程上的负载太多。"我刚刚听说过异步和线程。如何识别代码中对主UI负载过重的部分。如果你能提出一种不强调线程和异步任务的方法。那就是它在做什么 `

package com.pratham.cricket1;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import java.util.Random;

public class MatchPresetsActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    int a,b,balls;
    Spinner spinner;
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        switch(adapterView.getSelectedItemPosition()){
            case 0:
                a=0;
                break;
            case 1:
                a=1;
                break;
        }

    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }




    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.match_presets);
        a=0;
        b=0;

        spinner = (Spinner) findViewById(R.id.spinner);

        // Create an ArrayAdapter using the string array and a default spinner layout
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                R.array.planets_array, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);
        spinner.setVisibility(View.INVISIBLE);
        RadioGroup r1=(RadioGroup)findViewById(R.id.choose);


        switch(r1.getCheckedRadioButtonId()){
            case R.id.t20:
                balls=120;
                break;
            case R.id.t50:
                balls=300;
                break;
        }



    }
    public void toss(View view){
        Random rand=new Random();
        int a=rand.nextInt(50);
        if(a>25){
            b=0;
            spinner.setVisibility(View.VISIBLE);
            Toast.makeText(this,"Team A wins the toss",Toast.LENGTH_SHORT).show();
        }else {
            spinner.setVisibility(View.VISIBLE);
            b=1;
            Toast.makeText(this,"Team B wins the toss",Toast.LENGTH_SHORT).show();
        }

    }
    public void start(View view){
        Intent i1=new Intent(this,MainActivity.class);
        Bundle bundle=new Bundle();
        bundle.putInt("Balls",balls);
        bundle.putInt("Team won toss",b);
        bundle.putInt("Winning team chose",a);
        i1.putExtras(bundle);
        startActivity(i1);

    }
}

` 即使未显示,下一个活动初始化也会减慢它的速度。 这个问题只出现在Moto g3上,当我尝试或在对面的手机上或完全正常工作时。

1 个答案:

答案 0 :(得分:0)

在创建高效且响应迅速的应用程序时,无法避免线程化。我建议你学习它而不是避免它,因为它是编程的重要组成部分。如果你想确定负载较重的部分,请检查当时应用程序正在做什么,或者写下它正在做什么,也许我们可以帮助你。