我有一个 Android 应用程序,它使用服务在应用程序打开时不断更新视图中的文本视图。它使用向其发送意图的广播接收器对其进行更新。根据应用程序的性质,即使在应用程序退出/视图消失后,服务也需要继续运行。显然在这种情况下在主线程上运行服务是不明智的,因为这会占用太多并最终强制关闭并使应用程序崩溃。那么保持此服务运行的最佳方法是什么?异步任务?一个单独的线程?我该怎么做呢?我用这样的 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() 因为这是在片段内部。
所以这很好用;我想启动它时调用 MyTask.execute() ,当我想停止它时调用 MyTask.cancel(true) ,但我很确定我没有使用它应该如何使用它。我什至不知道我应该使用什么作为执行方法的参数(??)。并且仅在其中启动服务似乎不是最好的主意,而仅使用线程肯定会更好吗?为了让它按照预期的方式工作,正确的方法是什么?顺便说一句,虽然这确实比在主线程上运行它的工作时间要长得多,但它仍然在几个小时后崩溃。