这是几个问题之一。基本上我有一个带有三个选项卡的选项卡应用程序。每个选项卡都需要访问Web服务和WiFi API。我想通过为所有这些共享功能创建两个静态包装类来简化这一过程,以便所有三个活动都可以使用相同的静态类。Android异步静态类?
我在android/java中相当不实用,所以我在这里寻找一些指针。
作为一个例子,这里是我的Wifi类,只要它接收到它们,它就会将侦听器和发布扫描结果注册到它们。由用户决定是否要关注他们。
public final class WifiManagerActivity extends Activity {
private static WifiManager _wm;
private static List<OnWifiRecievedListener> _listeners;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
_wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if (!_wm.isWifiEnabled())
_wm.setWifiEnabled(true);
_listeners = new ArrayList<OnWifiRecievedListener>();
IntentFilter i = new IntentFilter();
i.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
publishResults(_wm.getScanResults());
_wm.startScan();
}
}, i);
_wm.startScan();
}
private static void publishResults(List<ScanResult> results){
for (int i = 0; i < _listeners.size(); i++)
_listeners.get(i).onWifiRecieved(results);
}
public static void addWifiRecievedListener(OnWifiRecievedListener owrl) {
if (!_listeners.contains(owrl))
_listeners.add(owrl);
}
public static void removeWifiRecievedListener(OnWifiRecievedListener owrl){
if (_listeners.contains(owrl))
_listeners.remove(owrl);
}
}
这有效吗?或者我不知道android应用程序的生命周期?我的方式有什么陷阱?
另外,如果WifiManagerActivity位于单独的线程上,它如何处理调用需要与另一个线程上的变量一起工作的方法?在C#中,我将使用调度程序来调用它,但使用java/android?
总结:
1)我目前的计划有任何问题或建议?
2)如何从一个线程调用一个方法,并让它改变属于另一个线程的变量?
谢谢!
我会尝试这种方法,让你知道它是如何结果。 – FlyingStreudel
很好,谢谢! – FlyingStreudel