【问题标题】:creating an Async task inside a service在服务中创建异步任务
【发布时间】:2015-12-19 10:54:56
【问题描述】:
我正在尝试实现一个从服务中的 url 获取字符串的异步任务。
我正在使用调用异步任务的startedService获取正确的字符串,更新公共数据库类内容并返回主活动,问题是我需要通知数据库更改的列表适配器位于主活动,我无法从服务中访问它,我是一个菜鸟,所以我不熟悉什么更好地使用、启动或绑定该工作的服务,有什么建议吗?
谢谢
【问题讨论】:
标签:
android
android-asynctask
android-service
【解决方案1】:
您可以使用 BroadcastReceiver :
在您的活动中:
@Override
public void onResume() {
super.onResume();
// Register mMessageReceiver to receive messages.
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
new IntentFilter("mybroadcast"));
}
// handler for received Intents for the "my-event" event
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Extract data included in the Intent
String message = intent.getStringExtra("message");
Log.d("receiver", "Got message: " + message);
}
};
@Override
protected void onPause() {
// Unregister since the activity is not visible
LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
super.onPause();
}
并从服务使用广播:
Intent intent = new Intent();
intent.setAction("mybroadcast");
sendBroadcast(intent)