Есть ли способ программно приостановить приложение Android в Phonegap? Я хотел бы имитировать поведение, которое происходит, когда вы нажимаете кнопку HOME. Мне уже приходилось перезаписывать обработчик кнопки «Назад», используя этот , и хотя в большинстве случаев я хочу, чтобы он выполнял мои действия, когда в определенном состоянии пользователь ожидает, что приложение свернется, и я хочу чтобы воспроизвести это поведение.
Имейте в виду, что на Android это не то же самое, что закрыть приложение. Это довольно легко сделать с помощью device.exitApp();
, но я бы хотел, чтобы он запоминал свое состояние и продолжал работать в фоновом режиме. Особенно, если в фоновом режиме все еще выполняется асинхронная работа.
Есть ли функция в Phonegap для достижения этого?
Возможный дубликат Вручную приостановить приложение в Android Phonegap , но я не смог найти некоторые инструменты, упомянутые там OP, такие как navigator
, поэтому я нервничал, чтобы полностью отредактировать и переписать их сообщение
-. ] 121 ---1136121-
. У меня есть виджет wx.py.Shell.shell, который позволяет пользователю выполнять код Python, взаимодействующий с моей программой. Я хочу иметь возможность передать функцию, которую пользователь определяет в этом пространстве, в мой код C++ (через сгенерированную wxswig оболочку вокруг моего пользовательского виджета )и выполнить ее.
В моем коде C++ я использую класс std ::function для вызова связанных функций (C++ или Python)
Поэтому я создал простой класс, чтобы обернуть PyObject оператором вызова функции.Однако я получаю segfault, когда пытаюсь вызвать PyObject *.
class PyMenuCallback
{
PyObject *Func;
public:
PyMenuCallback(const PyMenuCallback &op2);
PyMenuCallback(PyObject *func);
~PyMenuCallback ();
void operator() (int id);
};
/////////////////////////////////////////////////////////
PyMenuCallback::PyMenuCallback(PyObject *func)
: Func(func)
{
Py_XINCREF (Func);
if(!PyCallable_Check(Func))
cout << "Not a Callable Callback." << endl; //Throw an exception or something
}
PyMenuCallback::PyMenuCallback(const PyMenuCallback &op2)
: Func (op2.Func)
{
Py_XINCREF (Func);
if(!PyCallable_Check(Func))
cout << "Not a Callable Callback." << endl;
}
PyMenuCallback::~PyMenuCallback()
{
Py_XDECREF (Func);
}
void PyMenuCallback::operator() (int id)
{
cout << "Calling Callback" << endl;
if (Func == 0 || Func == Py_None || !PyCallable_Check(Func))
return;
cout << "Building Args" << endl;
PyObject *arglist = Py_BuildValue ("(i)",id);
cout << "Func: " << Func->ob_type->tp_name << " " << Func->ob_refcnt << endl;
PyObject *result = PyObject_Call(Func,arglist,0); //<<<<<---SEGFAULTS HERE
cout << "Executed" << endl;
Py_DECREF(arglist);
Py_XDECREF(result);
}
В своих попытках выяснить, что происходит, я поместил кучу печатных утверждений. Один из которых печатает имя типа и количество ссылок на строку перед segfault. Это приводит к «функции 3», поэтому я должен предположить, что функция еще не уничтожена.
Я передаю следующее, чтобы глотнуть:
void AddOption (std::string name, PyObject *pycallback);
В котором я создаю PyMenuCallback
Я в недоумении, что вызывает segfault, есть идеи?