在BroadcastReceiver中启动Service

当前位置: 首页 >> 技术支持

分享到:
2013-12-29 20:04:32

建立一个BroadcastReceiver,代码如下:

  1. 		package net.blogjava.mobile.startupservice;  
  2.  
  3. import android.content.BroadcastReceiver;  
  4. import android.content.Context;  
  5. import android.content.Intent;  
  6.  
  7. public class StartupReceiver extends BroadcastReceiver  
  8. {  
  9.     @Override  
  10.     public void onReceive(Context context, Intent intent)  
  11.     {  
  12.         //  启动一个Service  
  13.         Intent serviceIntent = new Intent(context, MyService.class);          
  14.         context.startService(serviceIntent);          
  15.         Intent activityIntent = new Intent(context, MessageActivity.class);  
  16.         //  要想在Service中启动Activity,必须设置如下标志  
  17.         activityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  18.         context.startActivity(activityIntent);  
  19.     }  

在StartupReceiver类的onReceive方法中完成了两项工作:启动服务和显示一个Activity来提示服务启动成功。其中 MessageActivity是一个普通的Activity类,只是该类在配置时使用了"@android:style/Theme.Dialog"主 题,因此,如果服务启动成功,会显示如图8.4所示的信息。

图8.4  在BroadcastReceiver中启动服务

如果安装本例后,在重新启动模拟器后并未出现如图8.4所示的信息提示框,最大的可能是没有在AndroidManifest.xml文件中配置BroadcastReceiver和Service,下面来看一下AndroidManifest.xml文件的完整代码。

  1. 		<?xml version="1.0" encoding="utf-8"?> 
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     package="net.blogjava.mobile.startupservice"  android:versionCode="1" 
  4.     android:versionName="1.0"> 
  5.     <application android:icon="@drawable/icon"  android:label="@string/app_name"> 
  6.         <activity android:name=".MessageActivity"  android:theme="@android:style/Theme.Dialog"> 
  7.             <intent-filter>                  
  8.                 <category android:name="android. intent.category.LAUNCHER" /> 
  9.             </intent-filter> 
  10.         </activity> 
  11.         <receiver android:name="StartupReceiver"> 
  12.             <intent-filter> 
  13.                 <action android:name="android. intent.action.BOOT_COMPLETED" /> 
  14.                 <category android:name="android. intent.category.LAUNCHER" /> 
  15.             </intent-filter> 
  16.         </receiver> 
  17.         <service android:enabled="true" android:name=".MyService" /> 
  18.     </application> 
  19.     <uses-sdk android:minSdkVersion="3" /> 
  20.     <uses-permission android:name="android. permission.RECEIVE_BOOT_COMPLETED" /> 
  21. </manifest> 

现在运行本例,然后重启一下模拟器,看看LogCat视图中是否输出了相应的日志信息。

{LastAndNextNews}
自助服务
用户名:
密 码:

在线咨询

客服1:732055019

客服2:784578232

合作: 343365976


推荐产品
手机版 关于维泰 客户留言 在线报名
维泰软件 联系电话:400-660-6590 维护