自作のAndroidのアプリを実行すると動作がガクガクで右下のアプリ起動履歴ボタンを押すと"問題が発生したため、システムUIを終了します。"と表示されます。下がその時の条件です。実機(OSは4.2.2)でも同じでした。
- Android Studioに搭載されている仮想デバイス
- OSは 6.0 5.0 4.2.2 の3つ
- 起動中のアプリはこのアプリのみ
そこで質問です。システムUIが終了するとは、このアプリがメモリを使いすぎているのでしょうか?
ちなみにそれがアプリ(バスの到着までのタイマー)のコードです。長いですが無駄なところや改善の余地があるところも教えてください。
JAVA
1package timer.example.jp.timer; 2 3 4import android.content.Context; 5import android.content.Intent; 6import android.content.SharedPreferences; 7import android.os.Bundle; 8import android.support.v7.app.ActionBarActivity; 9import android.view.Menu; 10import android.view.MenuItem; 11import android.view.View; 12import android.widget.Button; 13import android.widget.FrameLayout; 14import android.widget.TextView; 15 16 17public class ListActivity extends ActionBarActivity implements View.OnClickListener { 18 19 @Override 20 protected void onCreate(Bundle savedInstanceState) { 21 super.onCreate(savedInstanceState); 22 setContentView(R.layout.activity_list); 23 24 int[] list = new int[15]; 25 26 TableData tableData = new TableData(); 27 String bs = null;//バス停名 28 byte i; 29 SharedPreferences Data; 30 for (i = 0; i <= 14; ++i) { 31 list[i] = 0; 32 Data = getSharedPreferences("DataSave" + i, Context.MODE_PRIVATE); 33 list[i] = Data.getInt("LevelSave" + i, 0); 34 if(list[i]!=0) { 35 bs = tableData.BusStopName[list[i]-1]; 36 } 37 if (bs == null) { 38 int[] RidF = {R.id.FrameLayout1, R.id.FrameLayout2, R.id.FrameLayout3, R.id.FrameLayout4, R.id.FrameLayout5, R.id.FrameLayout6, R.id.FrameLayout7, R.id.FrameLayout8, R.id.FrameLayout9, R.id.FrameLayout10, R.id.FrameLayout11, R.id.FrameLayout12, R.id.FrameLayout13, R.id.FrameLayout14, R.id.FrameLayout15}; 39 FrameLayout layout = (FrameLayout) findViewById(RidF[i]); 40 layout.setVisibility(View.GONE); 41 } else { 42 int[] RidB ={R.id.button1,R.id.button2,R.id.button3,R.id.button4,R.id.button5,R.id.button6,R.id.button7,R.id.button8,R.id.button9,R.id.button10,R.id.button11,R.id.button12,R.id.button13,R.id.button14,R.id.button15}; 43 int[] RidT1 = {R.id.textView1_1, R.id.textView2_1, R.id.textView3_1, R.id.textView4_1, R.id.textView5_1, R.id.textView6_1, R.id.textView7_1, R.id.textView8_1, R.id.textView9_1, R.id.textView10_1, R.id.textView11_1, R.id.textView12_1, R.id.textView13_1, R.id.textView14_1, R.id.textView15_1}; 44 int[] RidT2 = {R.id.textView1_2, R.id.textView2_2, R.id.textView3_2, R.id.textView4_2, R.id.textView5_2, R.id.textView6_2, R.id.textView7_2, R.id.textView8_2, R.id.textView9_2, R.id.textView10_2, R.id.textView11_2, R.id.textView12_2, R.id.textView13_2, R.id.textView14_2, R.id.textView15_2}; 45 TextView textView1 = (TextView) findViewById(RidT1[i]); 46 TextView textView2 = (TextView) findViewById(RidT2[i]); 47 TextView textView = (TextView) findViewById(R.id.textView); 48 Button button = (Button) findViewById(RidB[i]); 49 Timer timer = new Timer(); 50 51 timer.timer(textView2,tableData.StopTime[i],tableData.Rote[i] , 25.0f); 52 textView1.setText("" + tableData.BusStopName[list[i]-1]); 53 bs = null; 54 textView.setVisibility(View.GONE); 55 button.setOnClickListener(this); 56 } 57 } 58 } 59 60 @Override 61 public void onClick(View v) { 62 byte button = 100; 63 switch (v.getId()) { 64 case R.id.button1: 65 button = 0; 66 break; 67 case R.id.button2: 68 button = 1; 69 break; 70 case R.id.button3: 71 button = 2; 72 break; 73 case R.id.button4: 74 button = 3; 75 break; 76 case R.id.button5: 77 button = 4; 78 break; 79 case R.id.button6: 80 button = 5; 81 break; 82 case R.id.button7: 83 button = 6; 84 break; 85 case R.id.button8: 86 button = 7; 87 break; 88 case R.id.button9: 89 button = 8; 90 break; 91 case R.id.button10: 92 button = 9; 93 break; 94 case R.id.button11: 95 button = 10; 96 break; 97 case R.id.button12: 98 button = 11; 99 break; 100 case R.id.button13: 101 button = 12; 102 break; 103 case R.id.button14: 104 button = 13; 105 break; 106 case R.id.button15: 107 button = 14; 108 break; 109 } 110 SharedPreferences data = getSharedPreferences("DataTimer", Context.MODE_PRIVATE);//timer.timer()の値渡し 111 SharedPreferences.Editor editor = data.edit(); 112 editor.putInt("TimerSave", button); 113 editor.apply(); 114 115 Intent intent = new Intent(); 116 intent.setClassName("timer.example.jp.timer", "timer.example.jp.timer.MainActivity"); 117 startActivity(intent); 118 } 119}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。