Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.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 Android处理程序链NullPointerException_Java_Android_Multithreading_Android Handler - Fatal编程技术网

Java Android处理程序链NullPointerException

Java Android处理程序链NullPointerException,java,android,multithreading,android-handler,Java,Android,Multithreading,Android Handler,我正试图通过处理程序在活动-服务-线程之间创建通信活动启动启动线程的服务线程向服务器发送请求,等待应答并通过处理程序将其重新发送到服务(正常工作)。但是当我尝试从服务的处理程序向活动发送消息时,应用程序以NullPointerException关闭。我做错了什么 基于 我的活动 public class ActivityLogin extends Activity{ public static LoginHandler loginHandler = null; public

我正试图通过
处理程序在
活动
-
服务
-
线程
之间创建通信<代码>活动
启动启动
线程的
服务
<代码>线程
向服务器发送请求,等待应答并通过
处理程序将其重新发送到
服务
(正常工作)。但是当我尝试从
服务
处理程序
活动
发送消息时,应用程序以NullPointerException关闭。我做错了什么

基于

我的活动

public class ActivityLogin extends Activity{

    public static LoginHandler loginHandler = null;

    public static class LoginHandler extends Handler {

        private WeakReference<ActivityLogin> target = null;

        LoginHandler(ActivityLogin target) {
            this.target = new WeakReference<ActivityLogin>(target);
        }

        public void setTarget(ActivityLogin target) {
            this.target.clear();
            this.target = new WeakReference<ActivityLogin>(target);
        }

        @Override
        public void handleMessage(Message msg) {
            ActivityLogin activity = this.target.get();
            if(activity == null) return;

            String response = msg.getData().getString("RESPONSE");
            System.err.println("RESPONSE "+response);
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.d("TAG","---------------------APP STARTED---------------------");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_login);

        if(loginHandler == null) loginHandler = new LoginHandler(this);
        else loginHandler.setTarget(this);
    }

    public void onLogin(View v){

        JsonUser user = new JsonUser();
        user.login = "Name";
        user.password = "Pazzword";
        user.device = "4567-753-5768-2343";

        Intent intent = new Intent(this,ComService.class);
        intent.putExtra("DATA_KEY", new Gson().toJson(user));

        this.startService(intent);
    }
}
更新

04-15 18:36:35.292  24524-24524/com.example.test E/Trace﹕ error opening trace file: No such file or directory (2)
04-15 18:36:35.332  24524-24524/com.example.test D/TAG﹕ ---------------------APP STARTED---------------------
04-15 18:36:35.462  24524-24524/com.example.test D/libEGL﹕ loaded /system/lib/egl/libEGL_mali.so
04-15 18:36:35.462  24524-24524/com.example.test D/libEGL﹕ loaded /system/lib/egl/libGLESv1_CM_mali.so
04-15 18:36:35.462  24524-24524/com.example.test D/libEGL﹕ loaded /system/lib/egl/libGLESv2_mali.so
04-15 18:36:35.492  24524-24524/com.example.test D/OpenGLRenderer﹕ Enabling debug mode 0
04-15 18:36:36.442  24554-24554/com.example.test:background E/Trace﹕ error opening trace file: No such file or directory (2)
04-15 18:36:36.682  24554-24567/com.example.test:background W/System.err﹕ {"status":{"success":false,"message":"some_text"},"result":null}
04-15 18:36:36.682  24554-24554/com.example.test:background D/AndroidRuntime﹕ Shutting down VM
04-15 18:36:36.682  24554-24554/com.example.test:background W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41712300)
04-15 18:36:36.682  24554-24554/com.example.test:background E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at com.example.test.ComService$ServiceHandler.handleMessage(ComService.java:31)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4745)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
AndroidManifext.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.test"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="14"/>

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

    <uses-feature android:name="android.hardware.camera" android:required="true" />

    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher"
                 android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
        <activity android:name=".ActivityLogin"
                  android:label="@string/app_name"
                  android:windowSoftInputMode="stateHidden"
                  android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <service android:name=".ComService"
                 android:exported="false"
                 android:process=":background"
        />
    </application>
</manifest>


总之,我从我的应用程序中删除了
服务。安卓
服务
是癌症肿瘤,线程没有好处。这只是我的意见。

请发布异常的完整stacktrace和异常和声明的stacktrace。这不是您应该采用的实现服务到活动通信的方式。看一看消息或阅读有关服务绑定的信息。非常有趣!您可以执行活动服务线程活动,但不能执行活动服务线程服务活动。
04-15 18:36:35.292  24524-24524/com.example.test E/Trace﹕ error opening trace file: No such file or directory (2)
04-15 18:36:35.332  24524-24524/com.example.test D/TAG﹕ ---------------------APP STARTED---------------------
04-15 18:36:35.462  24524-24524/com.example.test D/libEGL﹕ loaded /system/lib/egl/libEGL_mali.so
04-15 18:36:35.462  24524-24524/com.example.test D/libEGL﹕ loaded /system/lib/egl/libGLESv1_CM_mali.so
04-15 18:36:35.462  24524-24524/com.example.test D/libEGL﹕ loaded /system/lib/egl/libGLESv2_mali.so
04-15 18:36:35.492  24524-24524/com.example.test D/OpenGLRenderer﹕ Enabling debug mode 0
04-15 18:36:36.442  24554-24554/com.example.test:background E/Trace﹕ error opening trace file: No such file or directory (2)
04-15 18:36:36.682  24554-24567/com.example.test:background W/System.err﹕ {"status":{"success":false,"message":"some_text"},"result":null}
04-15 18:36:36.682  24554-24554/com.example.test:background D/AndroidRuntime﹕ Shutting down VM
04-15 18:36:36.682  24554-24554/com.example.test:background W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41712300)
04-15 18:36:36.682  24554-24554/com.example.test:background E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at com.example.test.ComService$ServiceHandler.handleMessage(ComService.java:31)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4745)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.test"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="14"/>

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

    <uses-feature android:name="android.hardware.camera" android:required="true" />

    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher"
                 android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
        <activity android:name=".ActivityLogin"
                  android:label="@string/app_name"
                  android:windowSoftInputMode="stateHidden"
                  android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <service android:name=".ComService"
                 android:exported="false"
                 android:process=":background"
        />
    </application>
</manifest>