【问题标题】:How to make a process continue running in background in phonegap android如何使进程在phonegap android中继续在后台运行
【发布时间】:2013-10-07 10:41:53
【问题描述】:

我想创建一个应用程序,我将在其中将数据上传到服务器。感觉我正在将数据上传到服务器,因此当用户移动连接时,在上传数据连接可能会丢失时,连接可能会丢失一段时间。所以我想要的是,如果连接丢失,应该在后台运行一些东西,一旦连接可用,它总是会搜索连接,它开始将数据发送到服务器。 谁能告诉我如何做到这一点。有什么方法可以同时查看wifi和移动互联网的信号强度。 任何想法都值得赞赏。 提前致谢。

【问题讨论】:

    标签: android background-process cordova-2.0.0


    【解决方案1】:

    使用setInterval 方法,将network connection 状态函数(使用phonegap api)包装在其中。因此它将在特定的时间间隔内触发。建立连接后,将数据上传到服务器

    【讨论】:

    • 我已经尝试过网络连接,它用于查找连接类型,而不是信号强度......
    • 我想创建类似whatsapp应用程序在用户发送消息时所做的事情,如果连接丢失,它会执行一些后台进程来不断检查互联网连接,一旦找到连接,它就会发送消息。我想在将数据上传到服务器时做同样的事情。
    • @NeeravShah 你明白我的想法了吗?我在我的 LBS 应用程序中实现了这一点,它会在使用 setinterval + PG 网络连接获得互联网连接时将数据上传到服务器
    • @RED.Skull 如果我离开应用程序,它会使用 setTimeout 处理后台进程吗
    【解决方案2】:

    让我首先尝试回答您的第一个问题:后台处理。事实上,有多种方法可以实现这一点。第一个是真正的后台进程,即类似于 Linux 守护进程。只需查找有关此的各种文章。另一种是从 GUI 线程启动一个线程。这是一个简单的例子:

    public void onStartButtonClick(View view) {
        Log.i("onStartButtonClick", "clicked");
        mProgress = 0;
        new Thread() {
            @Override
            public void run() {
                Log.i("thread-" + Thread.currentThread().getId(), "run() method just started");
                while (mProgress < 100) {
                    try {
                        Thread.sleep(mSleepTime);
                        mProgress++;
                        Log.i("thread-" + Thread.currentThread().getId(), "progress is " + mProgress);
                        mHandler.post(mUpdateGUI);
                    } catch (InterruptedException e) {
                        // e.printStackTrace();
                    }
                }
            }
        }.start();
    

    请注意,这是一个过于简单的示例。 mHandler.post() 已添加为回调原始 GUI 线程的选项(不允许直接从线程调用 GUI)。这需要在您的课程中添加一些额外的代码:

    // Need handler for callbacks to the UI thread
    final Handler mHandler = new Handler();
    
    // Create runnable for posting
    final Runnable mUpdateGUI = new Runnable() {
        public void run() {
            updateProgress();
        }
    };
    

    updateProgress 方法是允许在 GUI 上调用的。示例:

    private void updateProgress() {
        mProgressBar.setProgress(mProgress);
    }
    

    希望这可以帮助您朝着正确的方向前进。祝你好运。

    【讨论】:

    • 我想创建类似whatsapp应用程序在用户发送消息时所做的事情,如果连接丢失,它会执行一些后台进程来不断检查互联网连接,一旦找到连接,它就会发送消息。我想在将数据上传到服务器时做同样的事情。
    • 抱歉,我错过了它是关于“phonegap”项目的。我对此并不熟悉。我只注意到您原始问题下方的“Android”标签。
    猜你喜欢
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 2015-11-09
    • 2012-02-16
    相关资源
    最近更新 更多