2015-01-21 108 views
2

我從一個從服務獲取消息並顯示在對話框中的活動開始一個服務。當我點擊返回或主頁按鈕,應用程序被殺害。並且在多任務區域找不到應用程序。我沒有在onBackPressed()上編寫任何代碼。我該如何糾正這個問題?服務代碼。應用程序殺死onBackPressed android

public class BleepService extends Service{ 
String gotAlert; 
Context context; 
String drAlert=null; 
public static boolean status = false; 

public static final String TAG = BleepService.class.getSimpleName(); 
int counter = 0;  
static final int UPDATE_INTERVAL = 5000; 
private Timer timer = new Timer(); 
String resServer; 

@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.i("SERVICE", "COMES TO THE ON STARTCOMMAND"); 
    doRepeat();  
    //return super.onStartCommand(intent, flags, startId); 
    return START_STICKY; 
} 

private void doRepeat() { 
    Log.i("SERVICE", "COMES TO THE DOREPEAT METHOD"); 
    timer.scheduleAtFixedRate(new TimerTask() { 
    public void run() { 

    new GetStatus().execute();  

    } 
    }, 1000, UPDATE_INTERVAL); 
} 

class GetStatus extends AsyncTask<Void, Void, String> 
{ 
    @Override 
    protected String doInBackground(Void... params) {   
     ServiceHandler sh = new ServiceHandler(); 
     resServer = sh.makeServiceCall(Urllist.urlGetPagerStatus, ServiceHandler.GET); 
     while(resServer.equals("1")) 
     { 
     status = true; 
     resServer = sh.makeServiceCall(Urllist.urlGetMsg, ServiceHandler.GET);    
     } 
     return resServer; 
    } 
    @Override 
    protected void onPostExecute(String result) { 

     Log.i("SERVICE", "COMES TO THE GetStatus AsyncTask Class"); 
     super.onPostExecute(result);   
     if(!result.equals("0")) 
     {  

      Intent i = new Intent("com.bleep.DR_ALERT_MESSAGE"); 
      i.putExtra("msg", result); 
      sendBroadcast(i); 

     }else{ 
      Toast.makeText(getApplicationContext(), "No New Message", Toast.LENGTH_SHORT).show(); 
     } 
    }  
} 


@Override 
public void onDestroy() { 
    //timer.cancel(); 
    //super.onDestroy(); 
    /*if (timer != null){ 
     timer.cancel(); 
    }*/ 
} 
} 
+1

logCat?!!碼?!! – 2015-01-21 08:10:43

回答

0

在其onStartCommand確保您Service回報START_STICKY。這樣,如果操作系統遇害,操作系統將重新啓動它。

當應用程序處於後臺時,Android應用程序隨時可能被殺死是合法的。

然而,OS很少殺死Services。你確定你不會自己殺死它,也許是由於一些錯誤?

+0

當存在內存問題時,操作系統將會終止應用程序,但在這種情況下,我無法從Logcat窗口得到任何線索 – ABI 2015-01-21 11:05:00

+0

您確定要開始使用您的服務嗎? – 2015-01-21 11:40:20

+0

是在OnCreate()中啓動服務。現在我已經複製了應用程序,並發現了這個問題。輪詢服務器不斷作出響應,我立即得到響應,將它發送給BCR,BCR打開帶有「是」和「否」按鈕的對話框。在響應對話框之前,它會在時間延遲爲5000ms的情況下啓動一個對話框。我該如何解決這個問題?請參考上面的代碼。謝謝。 – ABI 2015-01-21 14:22:31