Приостановка приложения Android с помощью Phonegap

Есть ли способ программно приостановить приложение Android в Phonegap? Я хотел бы имитировать поведение, которое происходит, когда вы нажимаете кнопку HOME. Мне уже приходилось перезаписывать обработчик кнопки «Назад», используя этот , и хотя в большинстве случаев я хочу, чтобы он выполнял мои действия, когда в определенном состоянии пользователь ожидает, что приложение свернется, и я хочу чтобы воспроизвести это поведение.

Имейте в виду, что на Android это не то же самое, что закрыть приложение. Это довольно легко сделать с помощью device.exitApp();, но я бы хотел, чтобы он запоминал свое состояние и продолжал работать в фоновом режиме. Особенно, если в фоновом режиме все еще выполняется асинхронная работа.

Есть ли функция в Phonegap для достижения этого?

Возможный дубликат Вручную приостановить приложение в Android Phonegap , но я не смог найти некоторые инструменты, упомянутые там OP, такие как navigator, поэтому я нервничал, чтобы полностью отредактировать и переписать их сообщение

-. ] 121 ---1136121-

Обратный вызов Python из SWIG PyObject _Call SegfaultУ меня есть виджет wx.py.Shell.shell, который позволяет пользователю выполнять код Python, взаимодействующий с моей программой. Я хочу иметь возможность передать функцию, которую пользователь определяет в этом пространстве, в мой код C++ (...

. У меня есть виджет 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, есть идеи?

9
задан Tocs 18 February 2015 в 16:04
поделиться