我的问题不重复这个问题!我的案例是关于 AsyncTask 而不仅仅是关于 Runnable,即便如此,我在 runnable 中有 2 个 AsyncTask 需要处理!
我是 Android 新手,我有一个由React Native创建的应用程序。但问题是我想sqlite
通过rest-API将存储在服务器中的任何数据(图像[jpg]和视频[mp4])上传并在android(Native Module)中处理任务
工作流程:
- 我的服务需要继续在后台运行以检查存储的任何数据
sqlite
- 该服务将在发送前压缩 mp4 扩展的大小(使用FFMPeg)
- 该服务将删除真实视频
- 该服务会将数据发送到服务器(我添加了 1 列调用
flag
以检查视频是否已压缩)
问题 :
我已经在服务中创建compressTask
和运行,sending
但是使用它意味着如果已经执行,函数将在尚未完成时执行,compressTask
sending
extends AsyncTask
compressTask
sending
compressTask
示例:我在 sqlite 中有 2 行视频,服务将执行compressTask
并且已经压缩了 1 个视频,但sending
将在第 2 个视频已经压缩之前执行
预期结果:我想处理发送等待已压缩的 2 个视频,我该怎么做?
我的代码:
public class myService extends Service {
public Runnable mRunnable = null;
private boolean mRunning = false;
Handler mHandler = new Handler();
IBinder mBinder = new LocalBinder();
String newPathOutputVideo = null;
int idProcessVideo = 0;
String log = null;
@Inject
FFmpeg ffmpeg;
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
public class LocalBinder extends Binder {
public myService getServerInstance() {
return myService.this;
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
loadFFmpeg();
Log.d("Service"," onstart kepanggil ga?");
mRunnable = new Runnable() {
@Override
public void run() {
/* ---New Code--- */
Log.d("Service","SERVICE RUN");
compressTask c = new compressTask();
c.execute();
sending a = new sending();
a.execute();
mHandler.postDelayed(mRunnable, 10 * 1000);
}
};
mHandler.postDelayed(mRunnable, 10 * 1000);
return START_STICKY;
}
}