对不起,问题标题的副本,但其他人问我实际上与我的不同。
我想要实现的目标
我希望我的应用程序在屏幕空闲时向用户显示MainActivity。
Original code gotten from here
到目前为止做了什么
ScreenReceiver.class
public class ScreenReceiver extends BroadcastReceiver {
private boolean screenOff;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
screenOff = true;
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
screenOff = false;
}
Intent i = new Intent(context, UpdateService.class);
i.putExtra("screen_state", screenOff);
context.startService(i);
}
}
ScreenService.class
public static class ScreenService extends Service {
@Override
public void onCreate() {
super.onCreate();
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver mReceiver = new ScreenReceiver();
registerReceiver(mReceiver, filter);
}
@Override
public void onStart(Intent intent, int startId) {
boolean screenOn = intent.getBooleanExtra("screen_state", false);
if (!screenOn) {
//Implement here your code
} else {
//Implement here your code
}
}
}
现在我的MainActivity.class
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ScreenService screenService = new ScreenService() {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
};
screenService.onCreate();
}
}
现在这是我得到的错误
引发者:java.lang.NullPointerException:尝试在空对象引用上调用虚方法'android.content.Intent android.content.Context.registerReceiver(android.content.BroadcastReceiver,android.content.IntentFilter)'
我怎么解决这个?
你不应该调用onCreate()
方法本身!你做了:
screenService.onCreate();
要运行服务,您应该调用startService
方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent i = new Intent(this, ScreenService.class);
// This line starts a service
startService(i);
}