java - Android SDK - 在后台运行功能

标签 java android multithreading function sdk

我有一个函数,它的完成时间可能会有所不同。我想在此功能运行时显示一个进度对话框。

我知道您可以使用“线程”来实现此目的。有人可以指出我这样做的正确方向吗?

编辑: 这是我正在使用的代码:

private class LongOperation extends AsyncTask<String, Void, String> 
{
    ProgressDialog dialog;
    public Context context;
    @Override
    protected String doInBackground(String... params) {
        if (!dialog.isShowing())
            dialog.show(); // Just in case
        return null;
    }

    /* (non-Javadoc)
     * @see android.os.AsyncTask#onPostExecute(java.lang.Object)
     */
    @Override
    protected void onPostExecute(String result) {
        dialog.dismiss();
    }

    /* (non-Javadoc)
     * @see android.os.AsyncTask#onPreExecute()
     */
    @Override
    protected void onPreExecute() 
    {
        dialog = ProgressDialog.show(context, "Working", "Getting amenity information", true);
    }

    /* (non-Javadoc)
     * @see android.os.AsyncTask#onProgressUpdate(Progress[])
     */
    @Override
    protected void onProgressUpdate(Void... values) {
      // Things to be done while execution of long running operation is in progress. For example updating ProgessDialog
     }
}

这是 Asnyc 类。用户从菜单中选择一个选项,然后执行:

longOperation.execute(""); // Start Async Task

GetAmenities(Trails.UserLocation); // Long function operation

最佳答案

您应该为此目的使用 AsyncTask。参见 Android developers websiteHow to use AsyncTask .

一些示例代码:

private class LongRunningTask extends AsyncTask<Void, Boolean, Boolean> {

    private ProgressDialog progress;

    protected void onPreExecute() {
        progress = ProgressDialog.show(yourContext, "Title", "Text");
    }

    @Override
    protected Boolean doInBackground(Void... params) {
        return true;
    }

    protected void onPostExecute(Boolean result) {
        if(result) {
           progress.dismiss();
        }
    }

}

关于java - Android SDK - 在后台运行功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5168748/

相关文章:

JavaFX 显示 WebView 控件的 HTML 源代码

java - 更好的替代方法是使用 Void 作为可选参数

android - 如何将屏幕坐标插入hashmap android

java - 如何将我的 textClock 设置为手机的默认时间格式?

java - 如何在 Testng 中创建线程安全的自定义 HTML 结果

java - 我如何知道某些设备已与我的电脑连接?

使用 ANTLRv4 的 Java DSL 实现

java - 用于绘制可编辑流程图的 Android(或 Android 兼容 Java)库

c# - 为什么这个任务会提前返回?我做错了什么吗?

java - java线程等待获取不到锁的状态是什么