如何在JAVA (Android Studio)中使用AsynsTask



我有以下代码:

int my_couter = 0;
if (SDK_INT >= Build.VERSION_CODES.R && Environment.isExternalStorageManager()) {
my_couter += 1;
}
if (ContextCompat.checkSelfPermission(MainActivity.this, READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(MainActivity.this, WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
my_couter += 1;
}
if (_checkPermission("content://com.android.externalstorage.documents/tree/primary%3AAndroid%2Fdata%2Fnet.wargaming.wot.blitz%2Ffiles%2Fpacks/document/primary%3AAndroid%2Fdata%2Fnet.wargaming.wot.blitz%2Ffiles%2Fpacks")) {
my_couter += 1;
}
if (_checkPermission("content://com.android.externalstorage.documents/tree/primary%3AMTG%20MODS/document/primary%3AMTG%20MODS")) {
my_couter += 1;
}

我需要它在后台执行这个当按钮被按下并返回结果(my_counter)给我

btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View _view) {
}
});

AsyncTask现在已弃用。你最好使用这个

new Thread(new Runnable() {
@Override
public void run() {
//perform background task here and finally update the UI with result this way -
runOnUiThread(new Runnable() {
@Override
public void run() {
//Do something on UiThread
}
});
}
}).start();

您可以简单地创建一个内部类并从AsyncTask<String, String, String>扩展它。这允许你覆盖三个主要的回调。

  • protected void onPreExecute()
  • protected String doInBackground(String... params)
  • protected void onPostExecute(String s)

现在,根据您的要求,您不会使用onPreExecute.

但是,你应该使用doInBackground-这是你更新变量的地方也就是my_counter

最后,当AsyncTask完成时,调用onPostExecute,您将分别返回您的变量。

试试吧。

相关内容

  • 没有找到相关文章

最新更新