Android应用程序中的多个异步任务

Android应用程序中的多个异步任务,android,asynchronous,Android,Asynchronous,我有一个奇怪的问题。我正在开发一个Android应用程序,它有3个独立的异步任务。当我尝试在四核手机上运行应用程序时,没有问题。但如果我尝试在双核手机上运行应用程序,应用程序就会崩溃。如何修改双核手机的任务 这是我的密码 OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback); 这是第一个异步任务。第二个是Parse.com文件上传异步saveInBackground方法 public v

我有一个奇怪的问题。我正在开发一个Android应用程序,它有3个独立的异步任务。当我尝试在四核手机上运行应用程序时,没有问题。但如果我尝试在双核手机上运行应用程序,应用程序就会崩溃。如何修改双核手机的任务

这是我的密码

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
这是第一个异步任务。第二个是Parse.com文件上传异步saveInBackground方法

public void startUpload(String fileName) {

        try {
            photoFile = new ParseFile(fileName, scaledData);
            if (isTac) {
                pictures.setPhotoFileTac(photoFile);
            } else if (isCanak) {
                pictures.setPhotoFileCanak(photoFile);
            } else if (isYaprak) {
                pictures.setPhotoFileYaprak(photoFile);
            }


           // pictures.save();// Telefon çekirdeğine göre 2 asenkron methodu desteklemiyor o yüzden sadece save yazılabilir fakat başarılı kontolü SaveCallback' te yakalanamaz.




            pictures.saveInBackground(new SaveCallback() {

                @Override
                public void done(ParseException e) {
                    if(e == null){
                        Toast.makeText(getApplicationContext(),"Buluta yükleme başarılı. " , Toast.LENGTH_LONG).show();
                        if(pdialog != null)
                        {
                            pdialog.dismiss();//Eğer işlem başarılı ise asenkron sınıfta yaratılan progressbar ı kapat.
                        }
                    }
                    else{
                        Toast.makeText(getApplicationContext(),"Hata" +e.toString(),Toast.LENGTH_LONG).show();
                    }
                }
            });

        }
        catch (Exception ex)
        {
            Toast.makeText(getApplicationContext(),"Bağlantı Hatası !",Toast.LENGTH_LONG).show();
        }
    }
第三个是上传过程的进度条

public class AsyncUpload extends AsyncTask<String,Void,String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pdialog = new ProgressDialog(TakePictureActivity.this);
        pdialog.setMessage("Yükleniyor...");
        pdialog.setIndeterminate(false);
        pdialog.setCancelable(false);
        pdialog.show();
    }

    @Override
    protected String doInBackground(String... fileNames) {

        return fileNames[0];

    }

    @Override
    protected void onPostExecute(String name) {

        startUpload(name);

        super.onPostExecute(name);

    }

}
这是logcat输出

java.lang.NullPointerException
        at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:482)
        at com.altygtsoft.biomatch.TakePictureActivity.saveScaledPhoto(TakePictureActivity.java:202)
        at com.altygtsoft.biomatch.TakePictureActivity.access$000(TakePictureActivity.java:45)
        at com.altygtsoft.biomatch.TakePictureActivity$2$1$2.onPictureTaken(TakePictureActivity.java:147)
        at android.hardware.Camera$EventHandler.handleMessage(Camera.java:855)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:194)
        at android.app.ActivityThread.main(ActivityThread.java:5371)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
        at dalvik.system.NativeStart.main(Native Method)

刚刚意识到我的想法太大,无法发表评论,所以->

如果您执行以下操作,会发生什么情况

//Beware pseudo-code
new AsyncTask<>({
    onPreExecute(){
        //keep your code from before
        ...
    }
    doInBackground(Params... params){ 
        startUpload(params[0], params[1]); //minus the done() function, plus pictures?
    }
    onPostExecute(){
    //As I'm not sure where it fits in, if possible execute done() here.
    }
}).execute(fileName, pictures); //couldn't find the decleration of pictures, so I stole the decleration of independence instead. Also maybe you need to put pictures in there, depending on where it is and how public/static.
//小心伪代码
新异步任务({
onPreExecute(){
//保留以前的代码
...
}
doInBackground(Params…Params){
startUpload(参数[0],参数[1]);//减去done()函数,再加上图片?
}
onPostExecute(){
//因为我不确定它在哪里,如果可能的话,在这里执行done()。
}
}).执行(文件名、图片)//找不到对图片的删减,所以我偷了对独立的删减。也可能你需要把图片放在那里,这取决于它在哪里以及公共/静态的方式。

请将stacktrace与错误一起发布您是否也会发布您实际执行异步任务的行?是否出现内存不足错误?我已经添加了异步方法初始化的行。这是“不幸的是bla bla”开始时的logcat输出。当我使用pictures.save()解析方法时,在双手机和四手机上没有错误。但如果我使用saveInBackground的解析方法,就会在双核手机上发生此错误。感谢您的贡献,我决定在另一个活动中进行图像处理,基本上我已经注释掉了OpenCV.initAsync行,并为我解决了问题,但我对AsyncTask的定义有问题,我知道,但我现在还看不到:)
//Beware pseudo-code
new AsyncTask<>({
    onPreExecute(){
        //keep your code from before
        ...
    }
    doInBackground(Params... params){ 
        startUpload(params[0], params[1]); //minus the done() function, plus pictures?
    }
    onPostExecute(){
    //As I'm not sure where it fits in, if possible execute done() here.
    }
}).execute(fileName, pictures); //couldn't find the decleration of pictures, so I stole the decleration of independence instead. Also maybe you need to put pictures in there, depending on where it is and how public/static.