我正在尝试使用子进程模块和线程内的Popen启动'rsync'.在我调用rsync之后,我还需要读取输出.我正在使用通信方法来读取输出.我不使用线程时代码运行正常.看来,当我使用一个线程时,它会挂在通信呼叫上.我注意到的另一件事是,当我设置shell = False时,在线程中运行时,我从通信中得不到任何回报.
我有一个有两个活动的应用程序.第一个显示一个按钮,打开第二个按钮.
这是第一个最明智的定义:
<activity
android:name="com.example.buttonexample.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
第二项活动:
<activity
android:name="com.example.buttonexample.MainActivity2"
android:label="@string/title_activity_main_activity2" android:theme="@android:style/Theme.Translucent">
</activity>
Run Code Online (Sandbox Code Playgroud)
以下是我如何启动第二个活动(通过OnClickListener获取第一个活动上的按钮):
public void startSecondActivityClick(View v) {
Intent startActivity2 = new Intent(this, MainActivity2.class);
startActivity(startActivity2);
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是当我通过击中主页和应用程序的前景来后台应用程序.我注意到第一个活动是不断创造/摧毁自己.我通过在onDestory方法中添加一些代码来增加静态int来验证这一点:
private static int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
count++;
}
protected void onDestroy() {
super.onDestroy();
Log.i("MainActivity", String.format("Destroyed, %d", count));
}
Run Code Online (Sandbox Code Playgroud)
我也注意到删除半透明主题似乎解决了这个问题.我的问题是有没有办法半透明或类似的东西,但也没有重新启动?而且,我很好奇为什么会发生这种情况.我正在使用Galaxy SIII上的4.0.1 ICS进行测试.
在我们的应用程序中,我们使用融合位置提供程序(FLP)来跟踪位置.我们注意到,应用程序偶尔会进入一个状态,其中位置回调停止被调用.该应用程序主要用于两个平板电脑(nexus 7和LG G-pad 8.3).我们已经看到两个设备都出现了这个问题.通常,重置设备似乎可以缓解这个问题.我们相信我们遵循大多数使用FLP的最佳实践.但是,万一我们将这个示例代码放在一起,说明了我们如何使用FLP.
获取谷歌API客户端并致电连接:
m_googleApiClient = builder
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
m_googleApiClient.connect()
Run Code Online (Sandbox Code Playgroud)
连接后,我们开始侦听位置回调:
@Override
public void onConnected(Bundle bundle) {
m_fusedLocationProviderApi.requestLocationUpdates(m_googleApiClient, m_locationRequest, this);
}
Run Code Online (Sandbox Code Playgroud)
位置请求如下所示:
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
locationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
Run Code Online (Sandbox Code Playgroud)
然后我们像这样实现回调:
@Override
public void onLocationChanged(Location location) {
// set location member var and record timestamp.
}
Run Code Online (Sandbox Code Playgroud)
当问题发生时,我们似乎没有得到任何错误回调.当我们检测到我们在很长一段时间内没有收到GPS时,我们也尝试在google api客户端上调用reset().我们还每2秒使用一个计时器监控位置可用性(使用getLocationAvailability).通常我们发现让用户重置其设备(开机,关机)可以解决问题.
我们的问题是:
gps android google-play-services location-services fusedlocationproviderapi
我需要一个函数来确定目录是否是驱动器的安装点.我发现这个代码已经适用于linux:
def getmount(path):
path = os.path.abspath(path)
while path != os.path.sep:
if os.path.ismount(path):
return path
path = os.path.abspath(os.path.join(path, os.pardir))
return path
Run Code Online (Sandbox Code Playgroud)
但我不确定如何在Windows上使用它.我可以假设挂载点是驱动器号(例如C :)吗?我相信可以在Windows上安装网络,所以我也希望能够检测到该安装.
我已将zxing库集成到我的应用程序中,但我的部分要求是能够不断扫描QR码.我已经通过解雇和重新呈现zxing小部件在某种程度上完成了这一点,但对我的客户来说似乎太慢了.是否有另一种方法可以重置窗口小部件以再次开始扫描?