Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法实例化服务java.lang.NullPointerException_Java_Android - Fatal编程技术网

无法实例化服务java.lang.NullPointerException

无法实例化服务java.lang.NullPointerException,java,android,Java,Android,我正试图通过我的Android项目培训制作一个迷你yamba.newcircle.com。当互联网不可用时,我会保存文字信息,如果互联网可用,我会使用连接广播接收器。该应用程序自动启动一项服务,通过HTTP POST将ActiveAndroid中保存的所有文本行从表推送到web API 当我关闭Wifi时,用ActiveAndroid保存一些消息,然后重新打开Wifi;如果我的应用程序连接,它就会崩溃,出现NullPointereException 有什么建议吗 <?xml version

我正试图通过我的Android项目培训制作一个迷你
yamba.newcircle.com
。当互联网不可用时,我会保存文字信息,如果互联网可用,我会使用连接广播接收器。该应用程序自动启动一项服务,通过HTTP POST将ActiveAndroid中保存的所有文本行从表推送到web API

当我关闭Wifi时,用ActiveAndroid保存一些消息,然后重新打开Wifi;如果我的应用程序连接,它就会崩溃,出现
NullPointereException

有什么建议吗

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="pt.flag.miniyamba" >

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


    <application
        android:name="MiniYamba"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="AA_DB_NAME"
            android:value="yamba.db" />
        <meta-data
            android:name="AA_DB_VERSION"
            android:value="5" />

        <activity android:name=".Main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".OnlineStatus" >
        </activity>
        <activity android:name=".OfflineStatus" >
        </activity>
        <activity android:name=".SingleStatus" >
        </activity>
        <activity android:name=".NewStatus" >
        </activity>

        <receiver android:name=".NetworkBroadCastReceiver">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE"></action>
            </intent-filter>
        </receiver>
        <service android:name=".PushOfflineSavedService"/>

    </application>

</manifest>
意向服务

public class PushOfflineSavedService extends IntentService {

    private String LOG_TAG;

    public PushOfflineSavedService() {

        super("PushOfflineSavedService");
        ActiveAndroid.initialize(this);
    }

    @Override
    protected void onHandleIntent(Intent intent) {

        //enviar os status guardados, por enviar

        List<OfflinePostToSend> lista = new Select().from(OfflinePostToSend.class).execute();

        //loop para enviar os status
        if (lista.size() > 0) {

            for (int i = 0; i < lista.size(); i++) {

                HttpURLConnection urlConnection = null;
                BufferedReader reader = null;

                try {
                    String path = "http://yamba.newcircle.com/api/statuses/update.json";
                    String status = lista.get(i).getText();

                    URL url = new URL(path);
                    String userPass = "student:password";
                    String token = "Basic " + Base64.encodeToString(userPass.getBytes(), Base64.NO_WRAP);
                    urlConnection = (HttpURLConnection) url.openConnection();
                    urlConnection.setRequestMethod("POST");
                    // Adicionar o token como header do pedido
                    urlConnection.addRequestProperty("Authorization", token);
                    urlConnection.setDoOutput(true);

                    String postParameters = "status="+status;
                    urlConnection.setFixedLengthStreamingMode(postParameters.getBytes().length);
                    urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

                    // Adicionar o status ao método post
                    PrintWriter out = new PrintWriter(urlConnection.getOutputStream());
                    out.print(postParameters);
                    out.close();

                    reader = new BufferedReader(new InputStreamReader(new BufferedInputStream(urlConnection.getInputStream())));
                    StringBuilder buffer = new StringBuilder();

                    String line;
                    while ((line = reader.readLine()) != null) {
                        buffer.append(line);
                        buffer.append("\n");
                    }
                    //se buffer nao for full, temos 1 respota do API
                    if (buffer.length() != 0) {
                        // Stream was NOT empty.
                        //apagar este elemento da lista e da db

                        lista.get(i).delete();

                    }

                    //return buffer.toString();

                } catch (IOException e) {
                    Log.e(LOG_TAG, "Error ", e);
                } finally {
                    if (urlConnection != null) {
                        urlConnection.disconnect();
                    }
                    if (reader != null) {
                        try {
                            reader.close();
                        } catch (final IOException e) {
                            Log.e(LOG_TAG, "Error closing stream", e);
                        }
                    }
                }
            }
        }

    }
}
公共类PushOfflineSavedService扩展了IntentService{
私有字符串日志标签;
公共PushOfflineSavedService(){
超级(“PushOfflineSavedService”);
初始化(这个);
}
@凌驾
受保护的手部内容无效(意图){
//enviar os状态保护,por enviar
List lista=new Select().from(OfflinePostToSend.class).execute();
//循环操作系统状态
如果(lista.size()>0){
对于(int i=0;i
显示了对子类中的
initialize()
的调用,如下所示:

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        ActiveAndroid.initialize(this);
    }
}
尝试扩展应用程序并将您的
initialize()
调用放在那里,而不是放在服务中。

在子类中显示对
initialize()
的调用,如下所示:

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        ActiveAndroid.initialize(this);
    }
}

尝试扩展应用程序,并将您的
initialize()
调用放在那里,而不是放在服务中。

对不起,编辑为添加logI我猜问题是因为这行
ActiveAndroid.initialize(这)在您的
PushOfflineSavedService
constructorActiveAndroid.initialize中(此);标记为蓝色,我该把它移到哪里?我需要活动的android orm来查询和构建一个列表,我不确定这只是猜测。进行调试并检查问题是否仅限于该行或其他内容。抱歉,编辑以添加logI猜测问题是因为这行
ActiveAndroid。初始化(此)在您的
PushOfflineSavedService
constructorActiveAndroid.initialize中(此);标记为蓝色,我该把它移到哪里?我需要活动的android orm来查询和构建一个列表,我不确定这只是猜测。进行调试并检查问题是否仅限于该行或其他内容。公共类MiniYamba扩展应用程序{@Override public void onCreate(){super.onCreate();ActiveAndroid.initialize(this);}}}这些更改是否解决了问题?抱歉,问题仍然存在。如果您发布logcat输出,则包括异常和堆栈跟踪?公共类MiniYamba扩展应用程序{@Override public void onCreate(){super.onCreate();ActiveAndroid.initialize(this);}}}这些更改解决了问题吗?抱歉,问题仍然存在,您是否发布了logcat输出,包括异常和堆栈跟踪?