我已经为Android编程了一段时间,我仍在寻找保留数据而不是配置更改的解决方案.除了节约Parcelables到活动的Bundle在onSaveInstanceState文档使用暗示Fragment与setRetainInstance标志设置为true.
但我刚刚遇到一些onRetainCustomNonConfigurationInstance用于保存任意对象的代码(以一种奇特的方式,但基本上是没有引用的大对象Activity等).我从未见过这种方法,所以我有些疑惑:
onRetainNonConfigurationInstance(),也应该返回Object,实质上应该是同样的?作为奖励,我将不胜感激任何其他提示或解决方案,以节省状物体的状态AsyncTask,Observable,视图的主持人,并继续
android android-framework android-activity android-fragmentactivity
我创建了一个FragmentStatePagerAdapter用于提供小型图库的活动.但是,当活动恢复时(例如,从其他活动返回后),我无法刷新它.每次前两张图片都是空白的,只有在我将两张图片刷到一边后,它们才会刷新.我找到的答案都没有起作用(特别是压倒一切getItemPosition())
我这样设置:
mPagerAdapter = new PhotosPagerAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.photosViewPager);
mPager.setAdapter(mPagerAdapter);
Run Code Online (Sandbox Code Playgroud)
然后我有FragmentStatePagerAdapter类:
private class PhotosPagerAdapter extends FragmentStatePagerAdapter{
public PhotosPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return photos.size();
}
@Override
public Fragment getItem(int position) {
ImageFragment f = new ImageFragment(position);
return f;
}
@Override
public int getItemPosition(Object object) {
throw new RuntimeException();
//return POSITION_NONE;
}
}
Run Code Online (Sandbox Code Playgroud)
您可能已经注意到,我在getItemPosition中抛出RuntimeException,因为我想检查它何时被调用.直到我添加一些包含我的图片的列表才会调用它.然后是ImageFragment类:
public class ImageFragment extends Fragment{
int position;
Bitmap mBitmap;
int width;
int height;
ImageView img;
public ImageFragment(){ …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager fragmentpageradapter
我创建(通用Windows平台的应用程序库"Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"下dependencies和"uap10.0": {}下frameworks中project.json).我刚刚开始编写测试,但我似乎找不到任何支持通用Windows平台应用程序的模拟库.唯一的一个是MoqaLate,但它非常新,而且非常有限.
我看不到自己在没有嘲笑的情况下进行测试,但我也是UWP开发的新手.我错过了什么,或者在我的测试中真的不可能使用模拟?如果是这样,有什么替代方案?
编辑:我看到的一个替代方案是开发Windows类库(Portable),它只针对Windows Universal 10.0.这种方法有什么问题我应该小心吗?我的目标是拥有一个可以在Windows 10应用程序中使用的库(在移动设备,桌面设备和xbox上).
我正试图从中获取模拟更新FusedLocationProviderApi,但我似乎无法使其工作.这是我在android instrumentation测试中的设置方法:
locationProvider = new LocationProvider(InstrumentationRegistry.getTargetContext().getApplicationContext(), settings);
// Connect first, so that we don't receive 'true' location
locationProvider.googleApiClient.blockingConnect();
// Set mock mode, to receive only mock locations
LocationServices.FusedLocationApi.setMockMode(locationProvider.googleApiClient, true);
InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
@Override
public void run() {
// Start receiving locations; this call will connect api client, and if it's already connected (or after it connects) it will register for location updates
locationProvider.start();
}
});
// wait until we can request location updates
while (!locationProvider.isReceivingLocationUpdates) {
Thread.sleep(10);
} …Run Code Online (Sandbox Code Playgroud) testing android google-play-services fusedlocationproviderapi android-fusedlocation
我想检查设备上是否启用了蓝牙(以便应用程序可以在没有用户交互的情况下使用它).有没有办法做到这一点?我还可以单独检查蓝牙和蓝牙低功耗吗?