我是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上,当我尝试或在对面的手机上或完全正常工作时。
答案 0 :(得分:0)
在创建高效且响应迅速的应用程序时,无法避免线程化。我建议你学习它而不是避免它,因为它是编程的重要组成部分。如果你想确定负载较重的部分,请检查当时应用程序正在做什么,或者写下它正在做什么,也许我们可以帮助你。