Android编程中a View和a有什么区别ViewGroup?
有人可以解释一下BroadcastReceiver和之间的确切区别WakefulBroadcastReceiver吗?
在什么情况下我们必须使用每个Receiver类?
我开发Android应用程序并经常使用注释作为编译时参数检查,主要是android的支持注释.
java代码中的示例:
public class Test
{
@IntDef({Speed.SLOW,Speed.NORMAL,Speed.FAST})
public @interface Speed
{
public static final int SLOW = 0;
public static final int NORMAL = 1;
public static final int FAST = 2;
}
@Speed
private int speed;
public void setSpeed(@Speed int speed)
{
this.speed = speed;
}
}
Run Code Online (Sandbox Code Playgroud)
由于Android中的性能问题,我不想使用枚举.kotlin的自动转换器只生成无效代码.如何@IntDef在kotlin中使用注释?
我创建了一个Java类的Kotlin子类:
class AlarmReceiver : WakefulBroadcastReceiver() {
companion object {
const val ACTION_NOTIFY = "..."
}
override fun onReceive(context: Context, intent: Intent) { ... }
}
Run Code Online (Sandbox Code Playgroud)
WakefulBroadcastReceiver 有两种静态方法:
static boolean completeWakefulIntent(Intent intent)static ComponentName startWakefulService(Context context, Intent intent)从我的AlarmReceiver班级中调用这些就像我期望的那样.但是,我想在我的Kotlin子类之外调用其中一种方法.
如果我尝试AlarmReceiver.completeWakefulIntent(intent)使用不同的Kotlin类,我会收到以下编译错误:
未解决的参考:completeWakefulIntent
我认为这是因为编译器试图在AlarmReceiver伴随对象上解析方法,而不是从其超类中查找继承的方法.作为一种解决方法,我可以直接定义具有相同签名的方法AlarmReceiver.Companion:
class AlarmReceiver : WakefulBroadcastReceiver() {
companion object {
const val ACTION_NOTIFY = "..."
// Just call the superclass implementation for now
fun completeWakefulIntent(intent: Intent): Boolean =
WakefulBroadcastReceiver.completeWakefulIntent(intent)
} …Run Code Online (Sandbox Code Playgroud)