を起動するたびに実行されていますオンの状態でアクションがシェルスクリプトを実行し、しばらく時間がかかるので、SnackBar
と表示されるため、パフォーマンスには非常に悪いです)。ここでアンドロイド - SwitchCompat OnCheckedChangeListenerアクションは活動は私が私の活動の一部<code>SwitchCompat</code>が、私はそれらのいずれかに<code>OnCheckedChangeListener</code>を設定されているが、(<code>SharedPreferences</code>を使用して)、私は活動を開始するたびに、OnCheckedChangeListenerの作用がある
コードの小片は、スナックバーが示しアクティビティ(アプリ自体をOT)、およびのオン状態へのリンクアクション開くたびに... ...
のでpublic class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
//Private stuffs...
SwitchCompat play; //and many others
public static final String PREFS_NAME = "SwitchButton";
protected void onCreate(Bundle savedInstanceState) {
// ...
play = (SwitchCompat) findViewById(R.id.play_switch);
play.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
Shell.SU.run("sh /data/data/br.com.packagename/play_on");
Snackbar snack_play_on = Snackbar.make(play, R.string.play_on, Snackbar.LENGTH_SHORT);
snack_play_on.show();
SharedPreferences.Editor editor = getSharedPreferences("SwitchButton", MODE_PRIVATE).edit();
editor.putBoolean("onPlay", true);
editor.apply();
} else {
Shell.SU.run("sh /data/data/br.com.packagename/play_off");
SharedPreferences.Editor editor = getSharedPreferences("SwitchButton", MODE_PRIVATE).edit();
editor.putBoolean("onPlay", false);
editor.apply();
Snackbar snack_play_off = Snackbar.make(play, R.string.play_off, Snackbar.LENGTH_SHORT);
snack_play_off.show();
}
}
});
play.setChecked(sharedPrefs.getBoolean("onPlay", false));
ですSwitchCompatが実行されます。 これは、アクティビティをロードするときにフレームがスキップされる原因となります(1GB、1.2GHzクワッドデバイスではarroundを230にします)。 1つのスイッチ、4つまたは5つ以上があります。
どうすればよいですか?何かが足りないか、コードを間違った場所に置いていますか? OnResume、OnPauseなどの他のメソッドを使うべきですか?
卿を、私は期待どおりに動作しますが、敬礼します。シンプルなソリューション、それを明確に保つためにありがとう –