Android MultiThreading支持Android 8.0,但不支持Android 11

ac1kyiln  于 2023-05-27  发布在  Android
关注(0)|答案(1)|浏览(151)
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {

        super.onViewCreated(view, savedInstanceState);
        String[] themeStrings = {"Light","Dark","System Default"};
        ListView lv = requireView().findViewById(R.id.themeChangeLV);
        ArrayAdapter<String> ad = new ArrayAdapter<String>(requireContext(), android.R.layout.simple_list_item_1,themeStrings);
        lv.setAdapter(ad);
        

        sharedPreferences = requireContext().getSharedPreferences("MODE", Context.MODE_PRIVATE);
        nightMODE = sharedPreferences.getBoolean("night",false);

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                editor = sharedPreferences.edit();
                switch (i){
                    case 0:
                        new Thread(new Runnable() {
                            @Override
                            public void run() {
                                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
                                editor.putBoolean(getString(R.string.night),false);
                                editor.putBoolean(getString(R.string.sdt),false);
                                editor.apply();
                            }
                        }).start();
                        break;
                    case 1:
                        new Thread(new Runnable() {
                            @Override
                            public void run() {
                                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
                                editor.putBoolean(getString(R.string.night),true);
                                editor.putBoolean(getString(R.string.sdt),false);
                                editor.apply();
                            }
                        }).start();
                        break;
                    case 2:
                        editor.putBoolean(getString(R.string.sdt),true);
                        editor.apply();
                        break;
                }
            }
        });
    }

上面的代码使用了一个新的线程来更改应用主题,这样我的应用在大约半秒内不会变黑。
它在模拟器(Android 8.0)中工作,但在我的手机(Android 11)中,点击时会发生什么,应用程序停止工作?
有人能帮我这个吗?

4nkexdtk

4nkexdtk1#

这也取决于开发人员选项中的移动的设置,您应该更改它们。

相关问题