use*_*492 4 service android communication android-intent android-activity
我有一个创建意图的活动,使用putExtra()添加一些额外内容并调用startService(intent)来启动服务.
此服务根据额外内容计算一些内容,然后我想将结果发送回活动.
我可以这样做?
我尝试在我的服务上创建一个intent并使用sendBroadcast()进行广播.我有一个关于活动的broadcastReceiver,但我不确定我是否正确注册.我糊涂了!
有没有其他方法可以这样做?像StartActivityForResult,但对于服务(像StartServiceForResult或类似的东西)?
您尝试使用的方法很好!没有代码虽然很难说你可能做错了什么.
在您的服务中,您将广播这样的意图......
/**
* Send broadcast to the activity letting it know the service is active
*
* @param pActivate
*/
private final void sendServiceActiveBroadcast( final boolean pActivate ) {
final Intent _intent = new Intent();
_intent.setAction( "com.yourtld.android.SERVICE_BROADCAST" );
_intent.addCategory( "com.yourtld.android.CATEGORY" );
_intent.putExtra( "isactive", pActivate );
this.sendBroadcast( _intent );
}
Run Code Online (Sandbox Code Playgroud)
然后在你的活动中,你可以有类似......
创建一个动作字符串:
private static final String SERVICE_BROADCAST_ACTION = "com.yourtld.android.SERVICE_BROADCAST";
Run Code Online (Sandbox Code Playgroud)
在你的onResume()方法中你会...
final IntentFilter serviceActiveFilter = new IntentFilter( SERVICE_BROADCAST_ACTION );
serviceActiveFilter.addCategory( "com.yourtld.android.CATEGORY" );
this.serviceReceiver = new BroadcastReceiver() {
@Override
public void onReceive( final Context context, final Intent intent ) {
if( intent != null ) {
if( intent.getBooleanExtra( "isactive", false ) ) {
// The service is active
} else {
// False...
}
}
}
};
this.registerReceiver( this.serviceReceiver, serviceActiveFilter );
Run Code Online (Sandbox Code Playgroud)
希望有所帮助
| 归档时间: |
|
| 查看次数: |
5199 次 |
| 最近记录: |