2013-07-18 185 views
-2

我正在開發一個每小時必須連接到服務器的應用程序。這種情況發生時用戶不得不打開應用程序。在Android中運行後臺進程

  1. 應用程序可以在後臺運行嗎?這意味着當我的應用程序必須連接到服務器時,如果有人使用我的應用程序正在玩遊戲,我的應用程序可以連接而不中斷用戶玩遊戲。我知道I-Phone只允許一個第三方應用程序運行,IOS是不同的嗎?

  2. 假設應用程序可以作爲後臺進程運行,它們可以永遠保持打開狀態嗎?我知道幾乎所有新手機都沒有真正給用戶真正終止應用程序的能力,系統會根據需要終止程序。

  3. 如果應用程序無法在後臺運行並永遠保持打開狀態,那麼每個小時都可以通過電話自動打開應用程序?

我一直在尋找的鬧鐘應用程序,因爲他們似乎是打開在設定的時間運行一個後臺進程/,這正是我想我的應用程序做的。可悲的是我找不到任何好的源代碼。所有鬧鐘示例都需要應用程序打開或鬧鐘不會熄滅。任何幫助將非常感激。 (請不要聯繫我到谷歌源,我已經看過那個)

回答

1

1->是的,您的應用程序可以在不中斷用戶的情況下連接到服務器。您需要使用後臺服務來實現此目的。

2->您可以使用後臺服務來保持運行,但它確實是一個壞主意,要讓它永遠運行。這將耗盡電池並不必要地使用內存,CPU和網絡。 系統可以控制應用程序,在需要時可以終止後臺進程。

3->我不認爲有一個規定,您可以自動打開一個應用程序。除非您正在使用某種服務將廣播或事件發送到將啓動它的應用程序。這再次是一個糟糕的設計。用戶不喜歡,如果他/她的電話的行爲古怪:)

1

Android有一些被稱爲

服務

服務與報警管理應該一起解決您的問題。

0

是的,你可以像這個樣

MainFest文件創建一個簡單的服務類

<service 
     android:name="com.example.service.LocationUpdateSerivice" 
     class=".LocationUpdateSerivice" > 
     <intent-filter> 
      <action 
       android:name=".LocationUpdateSerivice" 
       android:value="com.pausefablogin.service.MY_SERVICE" /> 
     </intent-filter> 
    </service> 

Java代碼的

import java.util.ArrayList; 
import java.util.List; 
import java.util.Timer; 
import java.util.TimerTask; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import org.apache.http.protocol.HTTP; 
import org.apache.http.util.EntityUtils; 

import android.app.Service; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.location.Criteria; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.IBinder; 
import android.os.Looper; 
import android.util.Log; 
import android.widget.Toast; 



public class LocationUpdateSerivice extends Service implements LocationListener { 


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


     //I Have Created this class for location update use the concept 

    } 


    private void UpdateLocation() 
    {} 
    @Override 
    public void onStart(Intent intent, int startId) {  
     super.onStart(intent, startId); 
     Log.i(tag, "Service started..."); 
    } 
    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     Toast.makeText(this, "Service destroyed...", Toast.LENGTH_LONG).show(); 
    } 

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

@Override 
public void onLocationChanged(Location arg0) { 


} 


@Override 
public void onProviderDisabled(String arg0) { 
    // TODO Auto-generated method stub 

} 


@Override 
public void onProviderEnabled(String provider) { 
    // TODO Auto-generated method stub 

} 


@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
    // TODO Auto-generated method stub 

} 








}