AsyncTask的问题?

时间:2018-01-03 13:26:50

标签: android android-asynctask

我正在尝试理解AsyncTask类,我写了一个简单的代码,它以非优化的方式计算数字是否为Prime。我不想计算主线程中的主要问题,所以我实现了以下类:

private class PrimeTask extends AsyncTask<Integer, Void, String>{
    public String isPrime(Integer n){
        for(int i=2; i<n-1; i++){
            if(n%i==0){
                return "Not Prime";
            }
        }
        return "Is Prime";
    }
    @Override
    protected String doInBackground(Integer ... num){
        return isPrime(num[0]);
    }
    @Override
    protected void onPostExecute(String result){
        output.setText(result);
    }
}

每次用户按下MainActivity中的按钮时,我都会计算此任务。

        output = findViewById(R.id.Ouput);

    myButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            EditText input = findViewById(R.id.Input);
            //output.setText(isPrime(Integer.parseInt(input.getText().toString())));
            PrimeTask task = new PrimeTask();
            task.execute(Integer.parseInt(input.getText().toString()));
        }
    });

但是当我运行应用程序时,我仍然收到以下消息!

I/Choreographer: Skipped 57 frames!  The application may be doing too much work on its main thread

为什么我仍然有这条消息?我做错了吗?

0 个答案:

没有答案