当前位置:  开发笔记 > 编程语言 > 正文

设备重启后启动Phonegap插件

如何解决《设备重启后启动Phonegap插件》经验,为你挑选了0个好方法。

我正在为Android开发混合Phonegap应用程序.该应用程序只使用我正在开发的一个插件.这个插件做了三件事

地理位置变化的手表(前景和背景)

设置半小时警报以执行某些定期任务

收听推送消息.我使用pushy.me服务,我使用的代码遵循他们的文档.

我已经实现了代码以使应用程序调整到设备重新启动时有些惶恐,但结果很简单(感谢我在SO上的其他线程中找到的信息)

package com.example.plugin;

import org.apache.cordova.CordovaInterface;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaWebView;
import android.content.Context;
import android.content.BroadcastReceiver;
import android.content.pm.PackageManager;
import android.app.Activity;

import android.content.Intent;

public class Rebooter extends BroadcastReceiver
{
 @Override
 public void onReceive(Context context, Intent intent) 
 {
  Intent i = new Intent(context, MyAppCordovaPlugin.class); 
  i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  context.startActivity(i);  
 }
}

我这样注册了重启接收器


 
  
  
 

MyAppCordovaPlugin是我的应用程序/插件的入口点 - 扩展CordovaPlugin该类的插件.这是我在那里做的

public class MyAppCordovaPlugin extends CordovaPlugin
{
 private Context context;

 public void initialize(CordovaInterface cordova, CordovaWebView webView) 
 {
  super.initialize(cordova, webView);
  this.context = cordova.getActivity().getApplicationContext();
  //setup pushy.me broadcast receiver
  //setup geolocation changes receiver
  //setup broadcast receiver for a half-hourly alarm
 } 

 @Override
 public void onResume(boolean multitasking) 
 {
  super.onResume(multitasking);
  //unregister background location change receiver, if present
  //switch geolocation to foreground mode. i.e. using
  //FusedLocationApi.requestLocationUpdates
 }

 @Override
 public void onPause(boolean multitasking) 
 {
  super.onPause(multitasking);
  //stop request for foreground location updates, if present
  //switch geolocation to background mode, i.e by
  //registering a broadcast receiver that listens for location change 
  //broadcasts
 } 

当我在Android 4.4.2测试设备上手动启动应用程序时,一切都运行良好.即

检测到地理位置变化:前景和后台

收到推送消息.再次以f/g和b/g为单位

半小时报警有效

当我检查正在运行的应用程序时,我发现它包含一个服务PushySocketService和主进程,com.example.app它被标记为正在使用中.内存使用量相当可观.

当我重新启动手机时,我仍然发现相同的服务和"主进程"正在运行.但是,为主进程报告的内存使用量明显较低.

最重要的是 - 该应用程序不接收推送消息,也不响应地理位置更改.这只是在我推出应用程序之后才开始发生的main activity.

我必须在这里遗漏一些东西 - 所以重新启动的应用程序不会自动启动它main activity?如果是这样,我的Rebooter.onReceive代码肯定有问题?

为了完整起见,我应该提一下

只有Pushy.me和Rebooter广播接收器在plugin.xml文件中静态声明.Geo位置和警报广播接收器是从我的插件代码中动态注册的.

我正在使用Phonegap CLI v 6.4.2和JDK 7构建应用程序

我在这里显然做错了.我非常感谢任何能够让我走上正轨的人.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有