android– 即使手机处于睡眠状态,也可以在后台运行上传过程

android– 即使手机处于睡眠状态,也可以在后台运行上传过程,第1张

概述所以我开发了一个Android应用程序,它使用融合位置(LocationClient)每5秒确定用户的位置,并将此数据发送到我的服务器.当应用程序运行时,整个过程每5秒重复一次.我正在使用AsyncTask类在后台上传数据.>问题:当用户关闭应用程序或手机进入睡眠状态时,数据上传将停止.>我想要的:我希

所以我开发了一个Android应用程序,它使用融合位置(LocationClIEnt)每5秒确定用户的位置,并将此数据发送到我的服务器.当应用程序运行时,整个过程每5秒重复一次.我正在使用AsyncTask类在后台上传数据.

>问题:

当用户关闭应用程序或手机进入睡眠状态时,数据上传将停止.
>我想要的:

我希望应用程序能够连续将位置数据发送到我的服务器,即使用户关闭应用程序或手机处于睡眠状态时也是如此.这个过程应该在一个单独的线程上运行,因为我不希望这个过程使我的UI线程无响应.
>到目前为止我发现了什么:

我听说过服务,intentservices和alarmmanager但我不知道使用哪一个.我也听说过唤醒锁,迫使cpu不要睡觉.请记住,我不想一直打开屏幕,因为这会耗尽电池电量.

如何让我的应用程序始终将数据发送到服务器?

解决方法:

在这里,您可以创建一个服务,并根据您的需要每隔5/10秒使用AlarmManager调用此服务…
在您的MainActivity中

public static AlarmManager alarm;    public static PendingIntent pintent;  // write this code on button click            Calendar cal = Calendar.getInstance();            cal.add(Calendar.SECOND, 10);            Intent intent = new Intent(this, MyService.class);            pintent = PendingIntent.getService(this, 0, intent, 0);            alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);            alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 5000, pintent); // button click functionality over    // write this code outsIDe onCreate()    protected ServiceConnection mConnection = new ServiceConnection() {            @OverrIDe            public voID onServiceConnected(Componentname name, IBinder service) {                // Todo auto-generated method stub            }            @OverrIDe            public voID onServicedisconnected(Componentname name) {                // Todo auto-generated method stub            }        };

为MyService

public class MyService extends Service {    public static int counter = 0;    public MyService() {    }    @OverrIDe    public IBinder onBind(Intent intent) {        return new  Binder() ;    }    @OverrIDe    public voID onCreate() {        Toast.makeText(this, "First Service was Created", Toast.LENGTH_SHORT).show();       }    @OverrIDe    public voID onStart(Intent intent, int startID) {        counter++;        Toast.makeText(this, " First Service Started" + "  " + counter,               Toast.LENGTH_SHORT).show();    }    @OverrIDe    public voID onDestroy() {        Toast.makeText(this, "Service Destroyed", Toast.LENGTH_SHORT).show();        }    public voID onTaskRemoved (Intent rootIntent){        MainActivity.alarm.cancel(MainActivity.pintent);        this.stopSelf();       }

将此添加到

表现

 <application        ....        <activity         .....          </activity>     <service            androID:name=".MyService"            androID:enabled="true"            androID:exported="true" >        </service>      </application>
总结

以上是内存溢出为你收集整理的android – 即使手机处于睡眠状态,也可以在后台运行上传过程全部内容,希望文章能够帮你解决android – 即使手机处于睡眠状态,也可以在后台运行上传过程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1107230.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存