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