所以我开发了一个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 – 即使手机处于睡眠状态,也可以在后台运行上传过程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)