-2

我正在开发一个必须每小时连接到服务器一次的应用程序。这发生在用户无需打开应用程序的情况下。

  1. 应用程序可以在后台运行吗?这意味着如果在我的应用程序必须连接到服务器时使用我的应用程序的人正在玩游戏,我的应用程序可以在不中断用户玩游戏的情况下连接。我知道 I-Phone 一次只允许运行一个 3rd 方应用程序,IOS 有什么不同吗?

  2. 假设应用程序可以作为后台进程运行,它们可以永远保持打开状态吗?我知道几乎所有较新的手机实际上并没有赋予用户真正终止应用程序的能力,并且系统实际上会在需要时终止程序。

  3. 如果应用程序不能在后台运行并永远保持打开状态,那么手机可以每小时自动打开一个应用程序吗?

我一直在研究闹钟应用程序,因为它们似乎是一个在设定时间打开/运行的后台进程,这正是我希望我的应用程序做的事情。可悲的是我找不到任何好的源代码。所有闹钟示例都需要打开应用程序,否则闹钟不会响起。任何帮助将非常感激。(请不要将我链接到谷歌来源,我已经看过了)

4

3 回答 3

1

Android有一个被称为

服务

服务连同警报管理器应该可以解决您的问题。

于 2013-07-18T13:07:32.533 回答
1

1-> 是的,您的应用程序可以在后台连接到服务器而不会中断用户。您需要使用后台服务来实现这一点。

2->您可以拥有一个持续运行的后台服务,但这确实是一个坏主意,让它永远运行。这会耗尽电池并不必要地使用内存、cpu和网络。系统可以控制应用程序,它可以在需要时终止后台进程。

3-> 我认为没有可以自动打开应用程序的规定。除非您使用某种服务向将启动它的应用程序发送广播或事件。这又是一个糟糕的设计。用户不会喜欢他/她的手机行为怪异:)

于 2013-07-18T13:10:33.950 回答
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

}








}
于 2013-07-18T13:11:54.633 回答