fix network on main thread

This commit is contained in:
Alexey Kuznetsov 2017-07-21 23:08:55 +03:00
commit 5f15f4aa32

View file

@ -875,20 +875,13 @@ public class RecordingActivity extends AppCompatActivity {
d.setIndeterminate(false);
d.show();
encoder.run(new Runnable() {
final Runnable suc = new Runnable() {
@Override
public void run() {
d.setProgress(encoder.getProgress());
}
}, new Runnable() {
@Override
public void run() { // success
d.cancel();
if (Build.VERSION.SDK_INT >= 21 && s.startsWith(ContentResolver.SCHEME_CONTENT)) {
if (Build.VERSION.SDK_INT >= 21 && s.startsWith(ContentResolver.SCHEME_CONTENT)) { // for non SCHEME we write dirrectlry to storage
ContentResolver resolver = getContentResolver();
try {
String d = storage.getDocumentName(targetUri);
String d = Storage.getDocumentName(targetUri);
String ee = storage.getExt(targetUri);
Uri docUri = DocumentsContract.buildDocumentUriUsingTree(targetUri, DocumentsContract.getTreeDocumentId(targetUri));
String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(ee);
@ -899,27 +892,47 @@ public class RecordingActivity extends AppCompatActivity {
IOUtils.copy(is, os);
is.close();
os.close();
storage.delete(out); // delete tmp encoding file
Storage.delete(out); // delete tmp encoding file
} catch (IOException e) {
storage.delete(out); // delete tmp encoding file
Storage.delete(out); // delete tmp encoding file
try {
storage.delete(targetUri); // delete SAF encoding file
} catch (RuntimeException ee) {
Log.d(TAG, "unable to delete target uri", e); // ignore, not even created?
}
Error(e);
Post(e);
d.cancel();
return;
}
}
storage.delete(in); // delete raw recording
handler.post(new Runnable() {
@Override
public void run() {
Storage.delete(in); // delete raw recording
SharedPreferences.Editor edit = shared.edit();
edit.putString(MainApplication.PREFERENCE_LAST, Storage.getDocumentName(targetUri));
edit.commit();
SharedPreferences.Editor edit = shared.edit();
edit.putString(MainApplication.PREFERENCE_LAST, Storage.getDocumentName(targetUri));
edit.commit();
run.run();
run.run();
d.cancel();
}
});
}
};
encoder.run(new Runnable() {
@Override
public void run() {
d.setProgress(encoder.getProgress());
}
}, new Runnable() {
@Override
public void run() { // success
Thread thread = new Thread(suc); // network on main thread for SAF network
thread.start();
}
}, new Runnable() {
@Override
@ -930,6 +943,15 @@ public class RecordingActivity extends AppCompatActivity {
});
}
void Post(final Throwable e) {
handler.post(new Runnable() {
@Override
public void run() {
Error(e);
}
});
}
void Error(Throwable e) {
String msg = e.getMessage();
if (msg == null || msg.isEmpty()) {