Sending pause/resume notifcations to plugins regardless of 'keepRunning' state.

Not sure why you wouldn't want to send them

Added a OnNewIntent override for Plugins to use.
This commit is contained in:
Kevin Griffin 2011-06-21 11:32:22 -04:00
parent c978341d83
commit 327bda49a0
3 changed files with 42 additions and 13 deletions

View File

@ -9,13 +9,12 @@ package com.phonegap;
import org.json.JSONArray;
import org.json.JSONException;
import android.app.AlertDialog;
import android.widget.EditText;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.media.AudioManager;
import android.net.Uri;
@ -26,19 +25,21 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.GeolocationPermissions.Callback;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.JsPromptResult;
import android.webkit.WebSettings;
import android.webkit.WebSettings.LayoutAlgorithm;
import android.webkit.WebStorage;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.GeolocationPermissions.Callback;
import android.webkit.WebSettings.LayoutAlgorithm;
import android.widget.EditText;
import android.widget.LinearLayout;
import com.phonegap.api.PhonegapActivity;
import com.phonegap.api.Plugin;
import com.phonegap.api.PluginManager;
import com.phonegap.api.PhonegapActivity;
/**
* This class is the main Android activity that represents the PhoneGap
@ -608,17 +609,28 @@ public class DroidGap extends PhonegapActivity {
// Send pause event to JavaScript
this.appView.loadUrl("javascript:try{PhoneGap.onPause.fire();}catch(e){};");
// Forward to plugins
this.pluginManager.onPause();
// If app doesn't want to run in background
if (!this.keepRunning) {
// Forward to plugins
this.pluginManager.onPause();
// Pause JavaScript timers (including setInterval)
this.appView.pauseTimers();
}
}
@Override
/**
* Called when the activity receives a new intent
**/
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
//Forward to plugins
this.pluginManager.onNewIntent(intent);
}
@Override
/**
* Called when the activity will start interacting with the user.
@ -632,6 +644,9 @@ public class DroidGap extends PhonegapActivity {
// Send resume event to JavaScript
this.appView.loadUrl("javascript:try{PhoneGap.onResume.fire();}catch(e){};");
// Forward to plugins
this.pluginManager.onResume();
// If app doesn't want to run in background
if (!this.keepRunning || this.activityResultKeepRunning) {
@ -641,9 +656,6 @@ public class DroidGap extends PhonegapActivity {
this.activityResultKeepRunning = false;
}
// Forward to plugins
this.pluginManager.onResume();
// Resume JavaScript timers (including setInterval)
this.appView.resumeTimers();
}

View File

@ -74,6 +74,12 @@ public abstract class Plugin implements IPlugin {
public void onResume() {
}
/**
* Called when the activity receives a new intent.
*/
public void onNewIntent(Intent intent) {
}
/**
* The final call you receive before your activity is destroyed.
*/

View File

@ -13,6 +13,7 @@ import java.util.Map.Entry;
import org.json.JSONArray;
import org.json.JSONException;
import android.content.Intent;
import android.webkit.WebView;
/**
@ -265,4 +266,14 @@ public final class PluginManager {
plugin.onDestroy();
}
}
public void onNewIntent(Intent intent) {
java.util.Set<Entry<String,Plugin>> s = this.plugins.entrySet();
java.util.Iterator<Entry<String,Plugin>> it = s.iterator();
while(it.hasNext()) {
Entry<String,Plugin> entry = it.next();
Plugin plugin = entry.getValue();
plugin.onNewIntent(intent);
}
}
}