gpt4 book ai didi

android - 来自一个 Activity 的asyncTask在另一个 Activity android中运行

转载 作者:行者123 更新时间:2023-11-30 02:51:50 26 4
gpt4 key购买 nike

我只是想知道执行此操作的最佳且可能最简单的方法是什么。我有两个 Activity LoginAcitivty 和 Main Activity。

我在我的 MainActivity 中将 AsyncTask 编码为一个内部类,它向 Web 服务发送更新。当我单击 MainActivity 的注销按钮时,这会将应用程序返回到登录 Activity 。即使有不同的 Activity 正在运行,是否仍然可以运行 ASyncTask,或者是否有其他方法可以执行此类操作?

任何建议将不胜感激谢谢

最佳答案

Asynctask 与创建它的“实体”相关联,在您的情况下它将是 MainActivity,因此它不会在您的 Activity 销毁后继续存在(我相信您调用主 Activity 的 finis() 方法一次用户注销)您可以做的是使用在后台运行的服务并使用异步任务轮询您的服务器:

服务应该是这样的:

 public class PollService extends Service {

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

public void onStart(Intent intent, int startId) {
(new PollAsyncTask(this)).execute();
}

//callback used to retrieve the result from the asynctask
void callBack(String result) {
//here is your logic, taking the result back from the async task
//eventually re-run the asynctask
(new PollAsyncTask(this)).execute();
}

@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}

AsyncTask 应如下所示:

 private class PollAsyncTask extends AsyncTask<String, Void, String> {
private PollService caller;
PollAsyncTask(PollService caller) {
this.caller = caller;
}

@Override
protected String doInBackground(String... params) {
//do your polling here and return something meaningful to the service,
return SOMETHING_REFERRING_TO_THE_1_OF_3;
}

@Override
protected void onPostExecute(String result) {
//Give the result back to the caller:
this.caller.callBack(result);
}

@Override
protected void onPreExecute() {//nothing special here}

@Override
protected void onProgressUpdate(Void... values) {//nothing special here}

}

这样你的异步任务将轮询你的服务器当前在前台的任何 Activity 。该服务应在第一次运行时由您的第一个 Activity 启动(即在 onCreate 方法中):

 @Override
public void onCreate(Bundle savedInstanceState) {
if (savedInstanceState==null) {//only the first time
Intent serviceIntent = new Intent();
serviceIntent.setAction("com.yourcompany....PollService");
startService(serviceIntent);
}

}

希望这对您有所帮助。

关于android - 来自一个 Activity 的asyncTask在另一个 Activity android中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24010506/

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