在我的应用程序中,我使用ContentProvider
和使用LoaderManager.LoaderCallbacks<Cursor>.
片段(查看)
public class ArticleCatalogFragment extends BaseFragment
implements ArticleCatalogPresenter.View,
LoaderManager.LoaderCallbacks<Cursor> {
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return onCreateArticleCatalogLoader(args);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
data.registerContentObserver(new LoaderContentObserver(new Handler(), loader));
updateUI(data);
}
private Loader onCreateArticleCatalogLoader(Bundle args) {
int categoryId = args.getInt(CATEGORY_ID);
Loader loader = new ArticleCatalogLoader(this.getActivity(), categoryId);
return loader;
}
}
Run Code Online (Sandbox Code Playgroud)
从MVP的角度来看,我需要:
主持人
public class ArticleCatalogPresenter extends BasePresenter
implements LoaderManager.LoaderCallbacks<Cursor> {
View view;
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return onCreateArticleCatalogLoader(args); …
Run Code Online (Sandbox Code Playgroud) 我想探索如何在我的应用程序中分配内存.我有C#控制台应用程序并使用Visual Studio 2013 Professional.
我转到Analyze - > Perfomance and Diagnostics并选择了.NET内存分配
结果我得到以下总结:
在图表中每次使用CPU使用率(%).但是,如何才能看到每次分配内存和GC事件?我在这里找不到.
我怎样才能转换RealmResults<E>
成List<E>
?
我试过用方法copyFromRealm
:
RealmResults<EventRealm> result = realm.where(EventRealm.class).findAll();
EventRealm eventRealm = result.get(0);
int id = eventRealm.getId(); // return id 2564
String title = eventRealm.getTitle(); // return "My event"
List<EventRealm> copied = realm.copyFromRealm(result);
EventRealm eventRealm1 = copied.get(0);
int id1 = eventRealm1.getId(); // return id 0
String title1 = eventRealm1.getTitle(); // return "My event"
Run Code Online (Sandbox Code Playgroud)
但不太明白为什么在副本中getTitle()
给出正确的结果,但getId()
不正确.
模型
public class EventRealm extends RealmObject {
@PrimaryKey
private int id;
private String title;
public int getId() {
return …
Run Code Online (Sandbox Code Playgroud) 我有一个对象:
public class MyObject
{
public int Id { get; set; }
public List<MyObject> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有MyObject列表:
List<MyObject> collection = new List<MyObject>();
collection.Add(new MyObject()
{
Id = 1,
Items = null
});
collection.Add(new MyObject()
{
Id = 2,
Items = null
});
collection.Add(new MyObject()
{
Id = 3,
Items = null
});
List<MyObject> collectionMyObject = new List<MyObject>();
collectionMyObject.Add(new MyObject()
{
Id = 4,
Items = collection
});
collectionMyObject.Add(new MyObject()
{
Id = 5,
Items = null …
Run Code Online (Sandbox Code Playgroud) 我经常在Windows Phone Store(Windows Phone 8.1 Runtime app)中看到失败日志这个异常:
EM_WATCHDOG_TIMEOUT_DEADA444_Template.exe!{XXXXXXXX-D1A3-49E7-XXXX-316A928B125C}_Task_disconnected_while_still_running:_server_task_currentState_=_Hiding,_targetState_=_Inactive.
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪是空的,我无法处理异常.可能是什么问题呢?
我有json
场_id
String json = "{ _id : 1, name : 'Alex', role: 'admin' }"
Run Code Online (Sandbox Code Playgroud)
在我的Realm模型中,我使用@SerializedName
属性:
public class User extends RealmObject {
@SerializedName("_id")
@PrimaryKey
private int id;
private String name;
private String comment;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getComment() {
return comment;
}
public void setComment(String comment) …
Run Code Online (Sandbox Code Playgroud) 无法使用 Dagger 2 (Android Studio 1.3) 构建项目。
步骤 1. 向 build.gradle 添加依赖项
apt 'com.google.dagger:dagger-compiler:2.0'
compile 'com.google.dagger:dagger:2.0'
provided 'org.glassfish:javax.annotation:10.0-b28'
Run Code Online (Sandbox Code Playgroud)
完整的 build.gradle
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:recyclerview-v7:22.2.0'
compile 'com.android.support:cardview-v7:21.0.+'
compile 'com.mcxiaoke.volley:library:1.0.+'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.android.support:design:22.2.+'
compile 'com.android.support:palette-v7:22.2.+'
compile 'com.afollestad:material-dialogs:0.7.8.1'
apt 'com.google.dagger:dagger-compiler:2.0' …
Run Code Online (Sandbox Code Playgroud) 我正在使用一个包装谷歌地图的库(例子是假的,以简化问题,但本质保持不变),比如为 GoogleMap 装饰器,并有 MarkerManager 用于添加、删除标记等。
//图书馆
import com.google.android.gms.maps.GoogleMap;
public class DelegatingGoogleMap {
GoogleMap map;
MarkerManager manager;
public class DelegatingGoogleMap(GoogleMap map){
this.map = map;
this.manager = new MarkerManager(map);
}
}
import com.google.android.gms.maps.GoogleMap;
public class MarkerManager {
public class GoogleMap map;
public class MarkerManager(GoogleMap map) {
this.map = map;
}
}
Run Code Online (Sandbox Code Playgroud)
在应用程序中我想使用自己的 MarkerManager's
//应用程序
public class MarkerManagerExtended extends MarkerManager {
public class MarkerManager(GoogleMap map) {
super(map);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我想使用 Dagger 2 将 MarkerManagerExtended 注入到 DelegatingGoogleMap(属性注入)。
public class DelegatingGoogleMap {
GoogleMap …
Run Code Online (Sandbox Code Playgroud) 我从网络服务(User.Avatar
)获取用户的头像网址:
/users/user_id/12?last_update=timestamp
Run Code Online (Sandbox Code Playgroud)
在不同的控件中,我必须使用不同大小的头像(Web服务可以裁剪和调整图像大小):
ImageSource="{Binding User.Avatar, StringFormat=http://myurl.com/\{0\}/crop/110x110, Converter={StaticResource ImageSizeUrlConverter}}"/>
Run Code Online (Sandbox Code Playgroud)
转换器必须采取
http://myurl.com/users/user_id/12?last_update=timestamp/crop/110x110(带StringFormat
)
并返回
http://myurl.com/users/user_id/12/crop/110x110?last_update=timestamp
Run Code Online (Sandbox Code Playgroud)
但转换器采取/users/user_id/12?last_update=timestamp
(没有StringFormat
).
这是正常的行为吗?
我有一个功能:
int f1(int a)
{
return a;
}
int f2(int a)
{
return a*2;
}
Run Code Online (Sandbox Code Playgroud)
我希望执行函数异步和并行,等待结果和求和然后结果.我可以使用代码
var result1 = Task.Run(() => f1(5));
var result2 = Task.Run(() => f2(10));
await Task.WhenAll(result1, result2);
int result = result1.Result + result2.Result;
Run Code Online (Sandbox Code Playgroud)
这很酷.但是,如果我的函数与回调一起工作,那该怎么做呢
void f1(Action<int> action, int a)
{
action.Invoke(a);
}
void f2(Action<int> action, int a)
{
a = a*2;
action.Invoke(a);
}
f1(result => Console.WriteLine("result1 = {0}", result), 5);
f2(result => Console.WriteLine("result2 = {0}", result), 10);
Run Code Online (Sandbox Code Playgroud)
我无法重写这个函数,这个函数在其他代码中使用.在这种情况下,我可以解决我的代码不像地狱的问题?
android ×5
c# ×3
dagger-2 ×2
realm ×2
.net ×1
async-await ×1
data-binding ×1
google-maps ×1
java ×1
json ×1
linq ×1
mvp ×1
wpf ×1