gpt4 book ai didi

Android - 如何在服务运行时显示进度对话框?

转载 作者:搜寻专家 更新时间:2023-11-01 09:50:09 27 4
gpt4 key购买 nike

我想创建一个服务,从网络下载内容,我想在它执行时显示进度对话框。我知道如何使用 asynctask 和 volley 的进度对话框,但在这里我不知道,现在可以在 UI 线程上通知我使用服务时服务结束。

我怎样才能做到这一点?

代码如下

public class MainActivity extends Activity {

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

}

public void onClickStart(View v) {
startService(new Intent(this, MyService.class));
}

public void onClickStop(View v) {
stopService(new Intent(this, MyService.class));
}

}


public class MyService extends Service {

public void onCreate() {
super.onCreate();
}

public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(LOG_TAG, "onStartCommand");
someTask();
return super.onStartCommand(intent, flags, startId);
}

public void onDestroy() {
super.onDestroy();
}

public IBinder onBind(Intent intent) {
return null;
}

void someTask() {
new Thread(new Runnable() {
public void run() {
for (int i = 1; i<=5; i++) {
Log.d(LOG_TAG, "i = " + i);
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
stopSelf();
}
}).start();
}

最佳答案

当你想在你的服务中显示或隐藏进度条时创建广播消息:

Intent i = new Intent("yourPackage.SHOW_Progress");
sendBroadcast(i);

然后创建广播接收器并处理接收到的消息:

public class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
MainActivity mainActivity = ((MyApplication) context.getApplicationContext()).mainActivity;
mainActivity.showProgress();
}

}

在您的 mainActivity 中创建显示或隐藏进度条的方法

关于Android - 如何在服务运行时显示进度对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36535346/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com