我有以下代码:
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
,您将分别返回您的变量。
试试吧。