-1

サーバーからデータをschool applicationフェッチしようとしています。正常に動作しています。データをフェッチした後、バックグラウンドで実行されているファイル転送サービスの作成を使用してファイルをダウンロードしようとしています。この間、ファイル転送サービスが実行されている場合、ユーザーがサーバーをリコールするように制限したいと考えています。

すべてのサービスを表示する以下のコードを使用していますが、サービスのリストでサービスを見つけることができませんが、バックグラウンドでファイル転送が実行されています 設定で表示しても->サービスが実行されていることを示す実行中のアプリケーション

私のクラスは次のように見えます...誰か別の方法を提案できますか??

    public class Getdata {

    Intent DownloadServiceIntent;

    // Progress Dialog
    private ProgressDialog mProgressDialog;

    // Alert Dialog Manager
    Alert_Dialog_Manager alert = new Alert_Dialog_Manager();

    // Database_Handler Object
    Database_Handler dbh;
    SQLiteDatabase db;

    public Getdata(Context context,List<NameValuePair> request) {


        mContext = context;
        Request = request;
        DataUrl = mConnection.fun_GetWebserviceURL()+"Gatway.php";

        // get Database
        dbh = new Database_Handler(mContext);
        db = dbh.get_writeabledb();

        boolean checkservice = isServiceRunning(mContext);
        Log.d("boolean Value",""+checkservice); // Return Always false But My Service Is Running In Background
        if(checkservice){

            alert.showAlertDialog(mContext, " Request Alert ","File Download Started In Background \nPlease Try After Sometime!!", false);

        }else{
            // Get Data
            new GetDataService().execute();
        }
    }

    class GetDataService extends AsyncTask<String, String, String> {



        protected void onPreExecute() {
            super.onPreExecute();

            mProgressDialog = new ProgressDialog(mContext);
            mProgressDialog.setTitle("Please Wait For Few Minutes...");
            mProgressDialog.setMessage("Loading Database... ");
            mProgressDialog.setIndeterminate(false);
            mProgressDialog.setCancelable(false);
            mProgressDialog.show();

        }

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

            //Getting Data From Server

            return null;
        }

        protected void onPostExecute(String file_url) {
            // dismiss the dialog once done
            mProgressDialog.dismiss();

            // Starting service for Download Files..
            DownloadServiceIntent = new Intent(mContext,FileTransferService.class);
            mContext.startService(DownloadServiceIntent);

        } // GetWebService


    public boolean isServiceRunning(Context mContext){

         boolean isServiceFound = false;

         final ActivityManager activityManager =(ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);        
         List<ActivityManager.RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE);

         for (int i = 0; i < services.size(); i++)
         {
         Log.d("Service ClassName ","Service" + i + ":" + services.get(i).service.getClassName().toString());
         if (services.get(i).service.getClassName().toString().equals("com.soch.webservice.FileTransferService"))
         {
                     isServiceFound = true;
         }

         }
         return isServiceFound;
     }
}
4

2 に答える 2

0

別の方法は次のとおりです。

if(startService(someIntent) != null) { 
    Toast.makeText(getBaseContext(), "Service is already running", Toast.LENGTH_SHORT).show();
}else {
    Toast.makeText(getBaseContext(), "There is no service running, starting service..", Toast.LENGTH_SHORT).show();
}

編集

実行中のサービスのステータスをチェックする静的ブール変数を使用することをお勧めします。

このリンクもチェックしてください。確かに役立ちます

于 2013-10-15T10:21:44.283 に答える