enter code here试图启动该服务,但当服务第一次在应用程序启动期间完美地运行时,它并没有在引导时启动。
这是接收器,我想用开关的情况,因为有很多事情,我必须开始使用接收器。
@Override
public void onReceive(Context context, Intent intent) {
Intent serviceIntent;
switch (intent.getAction()) {
case SmackService.NEW_MESSAGE:
Log.i("TAG", "processMessage() BroadCast Recieve");
break;
case Intent.ACTION_BOOT_COMPLETED:
Log.i("TAG", "Boot");
Toast.makeText(context, "case", Toast.LENGTH_SHORT).show();
serviceIntent = new Intent(context, SmackService.class);
context.startService(serviceIntent);
break;
}
}清单内容:-
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver android:name="com.example.abhishek.im.ChatReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="com.tlt.rx.msg" />
</intent-filter>
</receiver>服务等级
public class SmackService extends Service {
@Override
public void onCreate() {
super.onCreate();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
user_data = new HashMap<>();
if (intent != null && intent.hasExtra(BUNDLE_MSG_SYNC)) {
doChatSync = intent.getBooleanExtra(BUNDLE_MSG_SYNC, false);
}
if (intent != null) {
String email, password, name;
email = intent.getExtras().getString("email");
password = intent.getExtras().getString("password");
name = intent.getExtras().getString("name");
activity=intent.getExtras().getString("activity");
user_data.put("email", email);
user_data.put("password", password);
user_data.put("name", name);
start(user_data);
}
return Service.START_STICKY;
}
}手动启动服务:
Toast.makeText(MainActivity.this, "Signing in", Toast.LENGTH_LONG).show();
Intent intent = new Intent(MainActivity.this, SmackService.class);
intent.putExtra("email", email);
intent.putExtra("password", password);
intent.putExtra("name", name);
intent.putExtra("activity", "MainActivity");
startService(intent);(新界);
发布于 2016-06-22 19:36:57
很清楚发生了什么。在引导时,您的BroadcastReceiver正在被调用。然后像这样启动Service:
serviceIntent = new Intent(context, SmackService.class);
context.startService(serviceIntent);在onStartCommand()中,您可以这样做:
email = intent.getExtras().getString("email");由于Intent中没有“附加”,所以getExtras()返回null,然后在null引用上调用getString(),然后调用NullPointerException,导致Service崩溃。
故事到此结束。
https://stackoverflow.com/questions/37916975
复制相似问题