आग लगाना बंद करें मैं उस एप्लिकेशन पर काम कर रहा हूं जिसे ऐप जावास्क्रिप्ट चलाने की आवश्यकता है जब ऐप अग्रभूमि में नहीं है; समस्या यह प्रतीत होती है कि जब ऐप को पृष्ठभूमि में रखा जाता है/वेबव्यू स्क्रीन से अलग किया जाता है तो वेबव्यू के ऑन पॉज़ विधि को कॉल किया जाता है जो प्रति दस्तावेज़ निम्नलिखित करता है: "इस वेबव्यू और उसके संबंधित डॉम से जुड़े किसी भी अतिरिक्त प्रसंस्करण को रोकता है, प्लगइन्स, जावास्क्रिप्ट आदि "पृष्ठभूमि में ऐप पर ओएस/रन जावास्क्रिप्ट द्वारा रोके जाने पर एंड्रॉइड वेबव्यू फिर से शुरू करें?
जो मैंने पाया है, उससे अब तक मेरी सबसे अच्छी शर्त वेबव्यू की "ऑनस्यूम" विधि को कॉल करने के लिए प्रतिबिंब का उपयोग कर रही है, जो इन सभी प्रक्रिया निलंबन को पूर्ववत करनी चाहिए। मेरे वर्तमान कार्यान्वयन के साथ मुझे कहा गया विधि का एक उदाहरण मिलता है, लेकिन जब कुछ भी नहीं किया जाता है तब भी ऐसा नहीं होता है क्योंकि मेरी अगली जावास्क्रिप्ट कॉल कुछ भी नहीं करती है (ध्यान दें कि यह तब काम करता है जब मेरे पास एप्लिकेशन खुले और अग्रभूमि में होता है)।
किसी और को कोई समस्या दिखाई दे रही है या मेरे ऐप को लॉन्च करने का कोई समाधान है जब आपका ऐप पूरी तरह से ऐप लॉन्च किए बिना पृष्ठभूमि में है?
Intent intent = new Intent("some action");
intent.putExtra("xtifyJson", xtifyJSON.toString());
context.sendBroadcast(intent);
मेरी प्रसारण रिसीवर के onReceive है, जो हमेशा पृष्ठभूमि में चल रहे सेवा में रहती है में:
पुश संदेश कह जावास्क्रिप्ट पृष्ठभूमि में चल सेवा को सूचित करने के लिए भेजा जाता है तो आशय भाग गया करने की आवश्यकता है में आता है
final String stringArrayExtra = intent.getStringExtra("xtifyJson");
if (!Text.isNull(stringArrayExtra)) {
new Handler(context.getMainLooper()).post(new Runnable() {
@Override
public void run() {
try {
Log.d("Hey Dev Guy", "Message received");
JavaScriptInterface javaScriptInterface = ((SpecialApplication) getApplicationContext()).getJavaScriptInterface();
relectHiddenMethod(javaScriptInterface.getParentWebView(), "onResume");
javaScriptInterface.getParentWebView().resumeTimers();
javaScriptInterface.callBackPushReceived(new JSONObject(stringArrayExtra));
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
reflectHiddenMethod प्रतिबिंब विधि:
private void reflectHiddenMethod(final WebView webview, final String name) {
if (webview != null) {
try {
Method method = WebView.class.getMethod(name);
Object invoke = method.invoke(webview);
}
catch (final Exception e) {
e.printStackTrace();
}
}
}
कुछ हद तक वास्तविक [प्रश्न] (http://stackoverflow.com/questions/7884568/android-webview-inside-a- सेवा)। मुख्य विचार - जावास्क्रिप्ट से संचार सेवा को एक सेवा में ले जाएं। – Stan