2013-07-18 139 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 

} 








}