2016-05-28 2 views
-1

Это код класса сервиса, который я создал. Это дает мне ошибку Unreachable code в строке handler.post (timedtask). Я прокомментировал это полужирным шрифтом. Пожалуйста, помогите мне с этим. Это убивает меня!
public class ServerChecker extends Service { NotificationCompat.Builder mBuilder; Намеренный результатIntent; Обработчик обработчика; Runnable timedtask; Строка bus_no; int mystoppageindex;Почему это заявление обработчика невосстанавливающего кода?

public ServerChecker() { 

} 

@Override 
public void onCreate() { 
    super.onCreate(); 



bus_no = PrefsHelper.getFromPreferences(MyApplication.getAppContext(), "BUSNO", ""); 
mBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this) 
.setTicker("Your bus is arriving") 
.setSmallIcon(R.mipmap.ic_launcher) 
.setContentTitle("My notification") 
.setContentText("Hello World!") 
.setDefaults(Notification.DEFAULT_SOUND) 
.setAutoCancel(true); 
resultIntent = new Intent(this, LoginActivity.class); 
String url = Config.url + "arrivalwarning.php?bus_no=3-C"; 

final StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() { 
@Override 
public void onResponse(String response) { 

mystoppageindex = Integer.parseInt(PrefsHelper.getFromPreferences(MyApplication.getAppContext(), "STOPPAGEINDEX", "")); 

try { 
JSONObject jsonObject = new JSONObject(response); 
int currentstoppageindex = Integer.parseInt(jsonObject.getString("stoppage_index")); 

       if (mystoppageindex - currentstoppageindex == 2) { 

        TaskStackBuilder stackBuilder = TaskStackBuilder.create(MyApplication.getAppContext()); 
        stackBuilder.addParentStack(LoginActivity.class); 
        stackBuilder.addNextIntent(resultIntent); 
        PendingIntent resultPendingIntent = 
          stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 
        mBuilder.setContentIntent(resultPendingIntent); 
        NotificationManager mNotificationManager = 
          (NotificationManager)  getSystemService(Context.NOTIFICATION_SERVICE); 
        mNotificationManager.notify(0, mBuilder.build()); 
       } 


      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 


     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

     } 
    }); 

    handler = new Handler(); 

    timedtask = new Runnable() { 
     @Override 
     public void run() 
     { 
      Log.d("TAG","Runnable"); 

      // VolleySingleton.getInstance().getRequestQueue().add(request); 

      handler.postDelayed(timedtask, 60000); 
     } 

    }; 






} 


@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    return super.onStartCommand(intent, flags, startId); 

    handler.post(timedtask); **// WHY IS THIS LINE AN ERROR UNREACHABLE CODE** 
} 


@Override 
public IBinder onBind(Intent intent) { 
    // TODO: Return the communication channel to the service. 
    throw new UnsupportedOperationException("Not yet implemented"); 
} 


@Override 
public void onDestroy() { 
    super.onDestroy(); 
    handler.removeCallbacks(timedtask); 
} 
} 
+2

" ПОЧЕМУ ЭТО ЛИНИЯ ОШИБКА НЕПРЕРЫВНОГО КОДА "- Потому что у вас это есть после заявления' return'. Переместите его до этого. –

ответ

0

у вас есть это здесь:

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    return super.onStartCommand(intent, flags, startId); 

    handler.post(timedtask); **// WHY IS THIS LINE AN ERROR UNREACHABLE CODE** 
} 

так, чтобы ответить на ваш вопрос, мы должны знать, как вы ожидаете Java выполнить инструкцию в методе, который уже вернулся ...

Смежные вопросы