1

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

4

2 回答 2

0

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

于 2013-10-07T11:04:52.167 回答
0

让我首先尝试回答您的第一个问题:后台处理。事实上,有多种方法可以实现这一点。第一个是真正的后台进程,例如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();
    }
};

允许在 GUI 上调用 updateProgress 方法。例子:

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

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

于 2013-10-07T11:08:51.403 回答