【问题标题】:Android and Java Static variable InitializationAndroid 和 Java 静态变量初始化
【发布时间】:2013-07-29 10:27:25
【问题描述】:

这是我的服务类代码,previous_network_type 是全局静态变量,它没有在 oncreate() 或 onstartcommand() 函数中初始化,也不是来自 create 函数的活动,为什么有帮助?每当我使用它时,它会给我 0 值它应该在启动此服务后给我 10 但返回 0。更清楚

第一个 MyService 有 previous_network_type 变量我想在 oncreate 或 oncommand 函数中为其分配一个值 我将在另一个类中使用它是广播接收器 并且您知道广播接收器仅在事件发生时运行,所以每当发生特定事件时我想做什么我想访问这个值

public class MyService extends Service {

    static int previous_network_type=0;

    public void onCreate() {
        previous_network_type=10;
    };

    public int onStartCommand(Intent intent, int flags, int startId) {
        previous_network_type=10;
        return Service.START_STICKY;
    }
}

以及其他类的代码(下面给出广播接收器)

        public void onReceive(Context context, Intent intent) 
         {
    MyService.current_network_type=MyService.previous_network_type;
           }

【问题讨论】:

  • 也许变量需要公开?此外,与问题无关,您在创建结束时有一个不需要的分号。
  • 如果您的 onCreate 方法运行正常,即使您的服务销毁(除了 dvm 已关闭),它也必须为 =10。
  • 它工作正常我检查了 100 次

标签: android service global-variables static-members


【解决方案1】:
public class MainActivity extends Activity {
    Intent i;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

         i=new Intent(this,MyService.class);

        startService(i);

    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();;
        stopService(i);
    }


}



public class MyService extends Service {

    static int previous_network_type=0;

    public void onCreate() {
        previous_network_type=10;
    };

    public int onStartCommand(Intent intent, int flags, int startId) {
        previous_network_type=10;
        Log.e("check","Value"+previous_network_type);
        return Service.START_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }
}

检查一次是否在 Android.manifest.xml 中定义了服务

  <service android:name="com.example.kuchbhi.MyService"
            ></service>

【讨论】:

  • 当我在此服务之外使用它时,它给出的值为零
  • 例如我在广播接收器中需要它,它给出 0
  • 但是oncreate和onstartcommand函数会在服务启动时自动调用
  • 它的全局和静态值为什么不留在那里。
  • 我告诉过你我正在从另一个类访问这个变量,它在那里返回零
【解决方案2】:

只需确保您在创建/启动服务后访问该值。 尝试调试。

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2010-12-22
    • 1970-01-01
    • 2013-07-21
    相关资源
    最近更新 更多