Min*_*ong 9 java multithreading android intentservice android-activity
我通过网络搜索了这个答案.但没有找到结果.对不起,我是Java和Android编程的新手.
我会更详细地阐述我的问题.假设我的Activity启动了一个IntentService,它在后台独立运行.该服务"订阅"到ResultReceiver的回调以更新活动UI.并且在服务执行长时间运行的过程中,Activity被销毁.那么,如果服务通过ResultReceiver向活动发送回复或进度更新,会发生什么?
因为我知道,ResultReceiver需要有一个Activity的引用.
在我的项目中,我需要开发一个视频剪辑消息应用程序.当用户捕获视频时,它会将数据传递给服务,服务将执行上传以及将一些信息保存到db ..同时通过ResultReceiver将进度更新发布到活动UI.
用户可以根据需要退出或终止活动.但是当他们导航回app/Activity时,如果上传/下载仍在进行中,则需要显示当前进度..
最初我想到了Asynctask,但它也有类似我提到的问题.它需要调用者Activity的引用.
有没有我能达到我提到的要求的地方?对不起,很长的帖子.希望有人可以启发我一点,有一些代码片段甚至更好.非常感谢 :)
编辑:简而言之,有没有办法将新创建的Activity动态绑定到正在运行的IntentService,以便服务可以将进度更新发送到正确的Activity?
在您的 Activity 上使用 BroadcastReceiver 并分别在onResume()和中注册/注销它onPause()。您可以使用 anIntentFilter来监听Intent来自您的 的an IntentService。
在您的 中IntentService,为 创建一个 Action 值IntentFilter,并在您想要更新时使用该 Action 发送广播:
public static final String ACTION = "com.example.yourapp.action.ACTION_TAG";
private void handleResult() {
if (BuildConfig.DEBUG) {
Log.v(TAG, "handleResult");
}
// Broadcast result
Intent intent = new Intent(ACTION);
intent.putExtra("your_extra", someValue);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}
Run Code Online (Sandbox Code Playgroud)
在你的Activity:
private BroadcastReceiver mYourReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (BuildConfig.DEBUG) {
Log.v(TAG, "onReceive");
}
Bundle bundle = intent.getExtras();
if (bundle != null) {
// Update with content from bundle
}
}
};
@Override
public void onResume() {
super.onResume();
if (BuildConfig.DEBUG) {
Log.v(TAG, "onResume");
}
// Register broadcast receiver
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mYourReceiver, new IntentFilter(YourIntentService.ACTION));
}
@Override
public void onPause() {
super.onPause();
if (BuildConfig.DEBUG) {
Log.v(TAG, "onPause");
}
// Unregister broadcast receiver
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(mYourReceiver);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
908 次 |
| 最近记录: |