Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
跳过帧-如何在android studio中创建第二个线程?_Android - Fatal编程技术网

跳过帧-如何在android studio中创建第二个线程?

跳过帧-如何在android studio中创建第二个线程?,android,Android,我有一个关于android studio中线程的问题。 我在onCreate方法中得到了一段很长的代码,其中有很多单击列表器和文本观察器。 现在我得到了这个“跳过80帧”错误(在emulator中) 好吧,我知道80帧不是那么多,但我想避免跳过更多帧…我读到解决方案是一个新线程,但不知怎的,当我在oncreate中创建一个新线程并将代码放入其中时,我得到了“跳过300帧”?!我想我做的每件事都是对的,我用新的线程使我的线程可以运行,当然我开始了…我做错什么了吗?有人能告诉我如何正确地做一根线和在

我有一个关于android studio中线程的问题。 我在onCreate方法中得到了一段很长的代码,其中有很多单击列表器和文本观察器。 现在我得到了这个“跳过80帧”错误(在emulator中)

好吧,我知道80帧不是那么多,但我想避免跳过更多帧…我读到解决方案是一个新线程,但不知怎的,当我在oncreate中创建一个新线程并将代码放入其中时,我得到了“跳过300帧”?!我想我做的每件事都是对的,我用新的线程使我的线程可以运行,当然我开始了…我做错什么了吗?有人能告诉我如何正确地做一根线和在哪里放置它吗? 谢谢 好的,伙计们,这是我的代码(不包括声明和定义)在onCreate中,我只是做一些事情,比如打电话和发送短信。这些EditExt是用户可以编辑的按钮名称,所有这些内容都保存在共享首选项中。我有第二个保存数据的活动,但我认为现在没关系。我想把这些代码放在第二个线程中,以不获取任何内容跳过帧或至少不太多..谢谢

call.setOnClickListener(
        new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                vibrate(78);
                if (!sharedPreferences.getString("nummer", null).isEmpty() && sharedPreferences.getString("nummer", null) != null) {
                    phoneCall(sharedPreferences.getString("nummer", null));
                } else {
                    toasttext("Keine Nummer gefunden!");
                }
            }
        }
);


scharf.setOnClickListener(
        new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                vibrate(78);
                if (!sharedPreferences.getString("Scharfnummer", "").isEmpty() && sharedPreferences.getString("Scharfnummer", null) != null) {
                    sendSms(sharedPreferences.getString("Scharfnummer", null), sharedPreferences.getString("Scharftext", null));
                    toasttext("Erfolgreich gesendet!");
                } else {
                    toasttext("Keine Daten gefunden!");
                }
            }
        }
);

unscharf.setOnClickListener(
        new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                vibrate(78);
                if (!sharedPreferences.getString("Unscharfnummer", "").isEmpty() && sharedPreferences.getString("Unscharfnummer", null) != null) {
                    sendSms(sharedPreferences.getString("Unscharfnummer", null), sharedPreferences.getString("Unscharftext", null));
                    toasttext("Erfolgreich gesendet!");
                } else {
                    toasttext("Keine Daten gefunden!");
                }
            }
        }
);

cam1.setOnClickListener(
        new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                vibrate(78);
                if (!sharedPreferences.getString("cam1", "").isEmpty() && (sharedPreferences.getString("cam1", null) != null)) {
                    openLink(sharedPreferences.getString("cam1", null));
                } else {
                    toasttext("Kein Link gefunden!");
                }
            }
        }
);

cam2.setOnClickListener(
        new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                vibrate(78);
                if (!sharedPreferences.getString("cam2", "").isEmpty() && sharedPreferences.getString("cam2", null) != null) {
                    openLink(sharedPreferences.getString("cam2", null));
                } else {
                    toasttext("Kein Link gefunden!");
                }
            }
        }
);

cam3.setOnClickListener(
        new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                vibrate(78);
                if (!sharedPreferences.getString("cam3", "").isEmpty() && sharedPreferences.getString("cam3", null) != null) {
                    openLink(sharedPreferences.getString("cam3", null));
                } else {
                    toasttext("Kein Link gefunden!");
                }
            }
        }
);


editCall.setText(getData("editCall", "Call"));

editCall.addTextChangedListener(
        new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                setData("editCall", s.toString());
            }
        }
);

editArm.setText(getData("editArm", "Arm"));
editArm.addTextChangedListener(
        new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }

            @Override
            public void afterTextChanged(Editable s) {
                setData("editArm", s.toString());
            }
        }
);
editDisarm.setText(getData("editDisarm", "Disarm"));
editDisarm.addTextChangedListener(
        new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }

            @Override
            public void afterTextChanged(Editable s) {
                setData("editDisarm", s.toString());
            }
        }
);

editCam1.setText(getData("editCam1", "Cam1"));
editCam1.addTextChangedListener(
        new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }

            @Override
            public void afterTextChanged(Editable s) {
                setData("editCam1", s.toString());
            }
        }
);

editCam2.setText(getData("editCam2", "Cam2"));
editCam2.addTextChangedListener(
        new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }

            @Override
            public void afterTextChanged(Editable s) {
                setData("editCam2", s.toString());
            }
        }
);

editCam3.setText(getData("editCam3", "Cam1"));
editCam3.addTextChangedListener(
        new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                setData("editCam3", s.toString());
            }
        }
);

编写新线程是关于Java而不是Android Studio的。然而,在没有看到您的源代码和方法的情况下,仍然无法回答您的问题。他们会使自己陷入僵局。因此,UI线程是一个单线程,任何更改都会停止其他线程(并跳过帧)…此外,您有奇怪的非序列代码(
.getString(“numer”,null)
),然后检查大小的空值…通过此im检查字符串在存在时不为空…如果它不存在(=null)什么都没发生我知道UI是一个线程,但我想为点击监听器和文本观察者创建第二个线程…当UI上的某些内容发生变化时(例如视图)我会用主线程来做这件事…那么我该怎么做线程呢?我想Bonatti是说添加侦听器和监视器是UI操作,必须在UI线程上完成。我没有尝试从后台线程来做这件事,但我认为它不会起作用。你确定这就是导致跳过帧的原因吗?Co输入所有代码,看看会发生什么。添加侦听器应该是一个非常快速的操作,可能是其他原因导致的。