如何在Android Studio中屏幕为IDLE时调用另一个类中的抽象类

问题描述 投票:-3回答:1

对不起,问题标题的副本,但其他人问我实际上与我的不同。

我想要实现的目标

我希望我的应用程序在屏幕空闲时向用户显示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)'

我怎么解决这个?

android
1个回答
2
投票

你不应该调用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);  
}
© www.soinside.com 2019 - 2024. All rights reserved.