Ale*_*oke 28 service notifications android android-activity
我似乎有一个经典的任务,但我找不到任何关于如何做的例子.
我想下载一些东西.好吧,我称之为网络服务并得到回复...但它几乎是一样的.
为了做到这一点,我有一个活动,启动一个服务,产生一个完成工作的线程.
现在我想使用我在启动服务的活动中获得的数据.
(我假设开始另一个活动来处理显示结果的工作很简单)
我的问题是服务如何通知某个活动(启动它或另一个活动的活动)?
任何指向示例的指针都非常感谢.
问候
JDe*_*ais 57
根据Google文档,如果您Activity
和Service
他们在同一个应用程序中,使用LocalBroadcastManager优于sendBroadcast(意图),因为发送的信息不会通过系统,这消除了拦截的风险.
它很容易使用.
在您的活动中,BroadcastReceiver
在onResume()方法中创建并动态添加侦听器:
private BroadcastReceiver bReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
//put here whaterver you want your activity to do with the intent received
}
};
protected void onResume(){
super.onResume();
LocalBroadcastManager.getInstance(this).registerReceiver(bReceiver, new IntentFilter("message"));
}
protected void onPause (){
super.onPause();
LocalBroadcastManager.getInstance(this).unregisterReceiver(bReceiver);
}
Run Code Online (Sandbox Code Playgroud)
在您的服务中,您将获得LocalBroadcastManager的实例并使用它来发送意图.我通常把它放在自己的方法中,如下所示:
private void sendBroadcast (boolean success){
Intent intent = new Intent ("message"); //put the same message as in the filter you used in the activity when registering the receiver
intent.putExtra("success", success);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}
Run Code Online (Sandbox Code Playgroud)
通过sendBroadcast()发送广播Intent与数据,该活动通过BroadcastReceiver发送.
这是一个例子:https://github.com/commonsguy/cw-android/tree/master/Service/WeatherAPI Doc:http: //developer.android.com/reference/android/content/BroadcastReceiver.html
归档时间: |
|
查看次数: |
30035 次 |
最近记录: |