如何在Android中组织代码

时间:2015-12-22 23:05:01

标签: android google-cloud-messaging package project-organization

如何整理代码?我试图将所有内容放在不同的包中,但随后我使用GCM的通知不再有效。如果我把所有东西放在同一根包中没问题。

这是我的两个测试,左边给出了gcm上的问题,没有:

enter image description here

有没有办法轻松整理代码,就像我在正确的代码中那样?或者所有的课程,活动,服务都需要在同一个包中吗?

编辑1 =解决方案

您需要创建自己的类,扩展GCMBroadcastReceiver,如下所示:

import android.content.Context;

import com.google.android.gcm.GCMBroadcastReceiver;

public class GCMReceiver extends GCMBroadcastReceiver{
    @Override
    protected String getGCMIntentServiceClassName(Context context) {
        return "yourAppPackage.yourNewAddedPackage.GCMIntentService";
    }
}

然后,您需要将清单中的默认接收器更改为此类所在的包。例如:

<receiver android:name="yourPackage.PackageOfTheGCMReceiver.GCMReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
                <category android:name="be.vanlooverenkoen.piautomation" />
            </intent-filter>
        </receiver>

2 个答案:

答案 0 :(得分:0)

如果你想组织你的代码,你有一些模式选项,如:MVC,关于Android是否使用默认MVC存在很大争议。

但是我在你的结构中看到你想要推荐的.java文件。 我给出了以下建议,我在不同的文件,书籍和github存储库中看到过(这些包是按字母顺序排列的):

活动

适配器

认证符

数据

data.migrations

片段

助手

接口

模型

偏好

同步

答案 1 :(得分:0)

您需要创建自己的类,扩展GCMBroadcastReceiver,如下所示:

import android.content.Context;

import com.google.android.gcm.GCMBroadcastReceiver;

public class GCMReceiver extends GCMBroadcastReceiver{
    @Override
    protected String getGCMIntentServiceClassName(Context context) {
        return "yourAppPackage.yourNewAddedPackage.GCMIntentService";
    }
}

然后,您需要将清单中的默认接收器更改为此类所在的包。例如:

<receiver android:name="yourPackage.PackageOfTheGCMReceiver.GCMReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
                <category android:name="be.vanlooverenkoen.piautomation" />
            </intent-filter>
        </receiver>