gpt4 book ai didi

android - 从 ASyncTask 或 Thread 运行服务?

转载 作者:搜寻专家 更新时间:2023-11-01 08:07:54 24 4
gpt4 key购买 nike

我有一个 Android 应用程序,它使用服务在应用程序打开时不断更新 View 中的 TextView 。它使用发送 Intent 的广播接收器更新它。根据应用程序的性质,即使在应用程序退出/ View 消失后,服务也需要继续运行。显然,在这种情况下在主线程上运行服务是不明智的,因为这会占用太多资源并最终强制关闭并使应用程序崩溃。那么保持此服务运行的最佳方法是什么?异步任务?一个单独的线程?我该怎么做呢?我用这样的 ASyncTask 尝试过:

private class MyTask extends AsyncTask {

@Override
protected Object doInBackground(Object... objects) {
return getActivity().getApplicationContext().startService(intent);
}

@Override
protected void onCancelled() {
getActivity().getApplicationContext().stopService(intent);
super.onCancelled();
}
}

哦,是的,我正在使用 getActivity().getApplicationContext(),因为它在 fragment 内部。

所以这很好用;我想启动它时调用 MyTask.execute() ,想停止它时调用 MyTask.cancel(true) ,但我很确定我没有按照应有的方式使用它。我什至不知道我应该使用什么作为执行方法的参数(??)。只在其中启动服务似乎不是最好的主意,仅使用线程肯定会更好吗?为了让它按照预期的方式工作,正确的方法是什么?顺便说一句,虽然这确实比在主线程上运行它的时间长得多,但它在几个小时后仍然会崩溃。

最佳答案

您可以使用异步任务在 android 中执行后台任务。除非在特定情况下,否则不建议自行处理线程。异步任务将在后台线程中运行,即使用户切换到另一个 View ,您也可以使用 onProgress() 更新定期获得回调。这里有一些关于异步任务的好教程,可以帮助您入门。请仔细阅读它们,因为异步任务将对您的 android 开发有很大帮助。

http://mobileorchard.com/android-app-developmentthreading-part-2-async-tasks/

http://www.vogella.com/articles/AndroidPerformance/article.html

官方文档如下: https://developer.android.com/reference/android/os/AsyncTask.html

关于android - 从 ASyncTask 或 Thread 运行服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12739925/

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