我在我的.csproj文件中使用MSBUILD宏来进行AfterBuild事件,主要是为了复制文件.我通过示例来做这个,所以我所知道的只有我在使用中看到的那些:SolutionDir,ProjectDir,OutputPath和Configuration.是否有在线任何地方的列表或良好信息页面,以便我可以阅读可用的内容,可用的构建中的哪些内容,定制等?我知道在项目属性Build Events选项卡中使用post build事件时,对话框中会列出宏及其相应的值...对于MSBUILD,是否存在任何此类gui?目前我只是手动编辑.csproj文件.
我是Objective-C和Cocoa的新手.我已经读过NSInteger和NSNumber在使用简单整数时是首选,因为它们是原始数字类型的"平台安全"版本(在NSNumber的情况下,包装在一个对象中).所以,我需要一个我的课程中的计数器,当NSTimer激活时它会增加.在Apple论坛上,我发现一群人都向类似情况的人推荐他们应该在标题中声明一个NSNumber指针,用numberWithInt:初始化它,然后每次需要增加它时通过将它分配给一个新的对象(类似的东西counter = [NSNumber numberWithInt:[counter intValue]+1];).这对我来说太过分了.如果我需要的只是一个int计数器(顺便说一句,我会在它达到15后将其重置为0,因此大小不是问题),我不能只使用一个int而不必分配一个每次迭代我的计时器循环的新对象?
如果是这样,我如何在整个班级中提供原始类型.我知道对于对象类型,我在我的界面中声明它并使用@property和@synthesize ...当使用原语时,等价(如果存在)是什么?
我目前正在将一个小型WPF项目转换为MVVM.我有一个List<CustomObject>在我的ItemsControl绑定的主窗口的ViewModel中,并使用DataTemplate来构建每个元素的UI.我的旧代码使用DataTemplate中的事件处理程序来处理click事件.我想使用某种命令绑定来消除我的代码隐藏事件处理程序,但我的ItemsControl中项目的DataContext是模型对象,所以我目前无法从ViewModel绑定到ICommand.
所以,我想有几种方法可以解决这个问题,而且我不确定哪种方法可以做到最"MVVM".我是否将ItemsControl.ItemsSource绑定到表示每个项目的新ViewModel类的集合?或者我使用UserControls而不是DataTemplate然后我可以将每个UserControl绑定到它自己的代表它的ViewModel实例?或者是否有某种绑定表达式我可以用来引用窗口的DataContext来访问绑定到ViewModel(因为我输入它,它听起来很糟糕,所以我假设一个很大的"否"给这个理念)?
另外,我想将命令绑定到的是Grid控件的LeftMouseButtonUp事件.网格没有"命令",所以我试图使用InputBindings.我可以使用静态命令(例如内置的ApplicationCommands之一),但是我无法使用绑定表达式绑定到作为ViewModel属性的ICommand实例,因为MouseBinding.Command不是DependencyProperty.
我对MVVM中的事件处理主题非常困惑,所以任何和所有信息都很受欢迎.
我之前问过一个问题,当我发送一个带有ACTION_SEND和MIME类型"image/png"的Intent时,会出现在IntentChooser中的内容.问题是,有些手机带有一个默认的消息应用程序没有出现在列表中,包括我的(myTouch 4G)以及通过电子邮件(使用HTC EVO)与之交谈的用户.如果我从内置图库应用程序或我保存的同一图像上的其他应用程序中选择"发送"或"共享"选项,并尝试直接从我的应用程序发送,则消息将显示在列表中.从我的应用程序它没有.其他手机没有这个问题,所以它显然是一个平台特定的东西.但这并不意味着我应该忽略这个问题.
所以,我去解决这个问题.我在我的应用程序中注册了一个活动以接收相同类型的意图,然后点击断点来分析从两种不同的发送方式发送的Intent对象.
问题是,我发送的意图和从Gallery或AndroZip发送的意图(消息确实出现在选择器中)似乎是相同的.它们都具有相同的动作,相同的类别,相同的标志,相同的mime类型.还有什么我可以在Gallery或AndroZip上的Intent上检查一下我是否可以添加更多信息,我可以添加到我的Intent中,以便在选择器中显示默认消息传递应用程序?
我有点期待我的ScrollViewer的子控件将MouseWheel事件自动备份到ScrollViewer,而事实并非如此.
我有一个带有ListBox的ScrollViewer.如果我手动将ListBox的宽度调整为小于ScrollViewer,MouseWheel将在所有ScrollViewer上工作,但当鼠标位于ListBox上方时无效.
这样做的标准方法是什么?我是否在ListBox上放置一个事件触发器来触发父事件上的事件?我在后面的代码中处理和重新路由事件吗?
我在Android手机上安装了几个免费应用程序,然后"升级"到付费完整版.我做同样的第一直觉是创建两个具有相同包名的应用程序,以便安装一个覆盖另一个,但市场中的应用必须是包名称唯一的.
为同一应用程序的免费和付费版本以及适用于此方案的任何命名约定或项目结构共享代码和资源的一些模式和最佳实践是什么?
编辑添加更多细节:( 最近两个月前问过...仍然没有找到解决方案)
我的活动有点复杂的观点.在技术意义上并不复杂......只有很多事情要发生.此特定应用程序中的所有活动都设置为FullScreen NoTitleBar,并且它们都设置为横向方向.当应用程序被隐藏然后恢复时,我注意到在开发的早期阶段,布局不经常垂直向下滑动,就好像为标题栏和状态栏腾出空间一样.
在开发的后期,该应用程序现在调用各种外部意图.我现在注意到,当从外部处理的触发意图(例如创建"选择器"意图或选择图像)恢复时,更倾向于进行相同的转换.我能够使用完全相同的步骤不一致地重现它...有时它有时会发生.似乎在测量和布局的各个阶段之间存在竞争条件.我假设系统正在为我做的其中一个步骤是检查全屏和notitlebar,并进行必要的转换.在某些情况下可能会发生这种情况.
我把一堆日志记录,并调用invalidate(),requestLayout()等尝试捕获竞争条件,但问题似乎是我的布局外部.我的根布局的top()和bottom()值分别始终为0和屏幕的高度,即使我在问题发生时记录这个值也是如此.
是否有其他方法的Window,WindowManager或任何其他系统视图相关的对象,我可以强制完全重新测量,重绘,重新检查当前的主题/样式标志?
我有一个活动,我发誓泄漏记忆.我正在处理的应用程序对图像做了大量工作,所以在直接使用Bitmaps时,我必须非常吝啬内存.我添加了一个Activity,现在如果你使用这个新的Activity它基本上让我超过了mem使用的边缘,我最终抛出"Bitmap超过VM预算"异常.如果您从未启动此活动,那么一切都很顺利.
我开始阅读有关内存泄漏的内容,我认为我的情况类似于Android文档中的文章所描述的内容.我正在动态创建一堆图像视图,并从资源添加BackgroundDrawable并添加OnClickListener.我想当Activity在其生命周期中点击onPause时我必须做一些清理,但我想知道具体的方法是什么.
这是应该演示我正在使用的对象的代码...
LinearLayout templateContainer;
.
.
.
ImageView imgTemplatePreview = (ImageView) item.findViewById(R.id.imgTemplatePreview);
.
.
.
imgTemplatePreview.setBackgroundDrawable(getResources().getDrawable(previewId));
imgTemplatePreview.setOnClickListener(imgClick);
templateContainer.addView(item);
Run Code Online (Sandbox Code Playgroud) 我正在检查彼此的包签名,以确定它们是否不兼容(针对不同的密钥库进行编译).我注意到这PackageInfo.signatures几乎总是一个包含单个条目的集合,这对我来说很有意义.我使用调试或生产密钥库构建我的应用程序,这确定了包的签名(这是我对此处的apk签名过程的简单理解).我知道如果我没有特别要求提供这些信息(通过传递PackageManager.GET_SIGNATURES旗帜),这将是null ,但我不太了解会有不止一个的情况.
我写了一些调试代码并在我的个人Android手机上运行.在手机上安装的300多个软件包中,除了一些似乎来自我的服务提供商(com.verizon.*名称空间)的软件包之外,一切都只有一个签名.
我觉得我的用例(包管理)可以考虑应用程序包将只有一个签名,但我想确保我没有遗漏可能引入边缘案例错误的东西.
我正在使用Google Play服务版本13中的AdMob.我意识到,当我将广告放入其中时ScrollView,AdMob会在从服务器成功获取广告后尝试执行不需要的自动滚动.
package com.example.admob_bug;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create the adView.
adView = new AdView(this);
adView.setAdUnitId("a151b03485063e0");
adView.setAdSize(AdSize.BANNER);
// Lookup your LinearLayout assuming it's been given
// the attribute android:id="@+id/mainLayout".
LinearLayout layout = (LinearLayout)findViewById(R.id.advertisement);
// Add the adView to it.
layout.addView(adView);
// Initiate a generic request.
AdRequest adRequest = new AdRequest.Builder().build();
// Load the …Run Code Online (Sandbox Code Playgroud) android ×6
java ×4
.net ×3
c# ×2
wpf ×2
admob ×1
cocoa ×1
google-play ×1
iphone ×1
memory-leaks ×1
mousewheel ×1
msbuild ×1
mvvm ×1
nsinteger ×1
nsnumber ×1
objective-c ×1
scrollviewer ×1