我有一个多项目(~10个模块),每次建筑大约需要20-30秒.当我在Android Studio中按Run时,我必须每次都等待重建应用程序,这非常慢.
是否可以在Android Studio中自动化构建过程?或者您对如何更快地完成此过程有任何建议?
在Eclipse中,由于自动构建,在模拟器上运行相同的项目大约需要3-5秒.
这是我的build.gradle文件(app模块):
buildscript {
repositories {
maven { url 'http://repo1.maven.org/maven2' }
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':libraries:SharedLibs')
compile project(':libraries:actionbarsherlock')
compile project(':libraries:FacebookSDK')
compile project(':libraries:GooglePlayServices')
compile project(':libraries:HorizontalGridView')
compile project(':libraries:ImageViewTouch')
compile project(':libraries:SlidingMenu')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 8
targetSdkVersion 16
}
}
Run Code Online (Sandbox Code Playgroud) 如何在Apple的新语言Swift中取消/删除数组中的元素?
这是一些代码:
let animals = ["cats", "dogs", "chimps", "moose"]
Run Code Online (Sandbox Code Playgroud)
如何animals[2]从阵列中删除元素?
Swift precondition(condition: Bool, message: String)和assert(condition: Bool, message: String)Swift有什么区别?
他们两个看起来都一样.我们应该在哪种情况下使用其中一种?
我在WKWebView中运行webapp时遇到了一些麻烦(特别是:某些按钮没有响应).我使用本教程作为指南,并成功地让webview显示我的webapp.所以现在我想调试javascript代码.
我知道webapp有效,因为我已经在Android webview以及无数浏览器(包括我正在使用的iPad模拟器上的safari)中尝试过它.经过一些快速的谷歌搜索后,我发现了如何使用Safari在UIWebView中调试javascript.可悲的是,这似乎不适用于新的WKWebView.
当我导航到Develop->iPad Simulator我被告知有"没有可检查的应用程序"时.我用一个简单的应用程序和UIWebView尝试了同样的事情,并通过safari调试完美地工作.
有没有办法在WKWebView中调试javascript代码?
要重现我的问题(使用swift),在xCode 6中启动一个新的单个屏幕项目,将下面提供的代码(由kinderas提供)复制到ViewController.swift文件中,然后将插座拖到文件中文档大纲的View下方.如果出现混淆,请参阅我上面链接的教程.View ControllerMain.storyboard
import UIKit
import WebKit
class ViewController: UIViewController {
@IBOutlet var containerView : UIView! = nil
var webView: WKWebView?
override func loadView() {
super.loadView()
self.webView = WKWebView()
self.view = self.webView!
}
override func viewDidLoad() {
super.viewDidLoad()
var url = NSURL(string:"http://www.kinderas.com/")
var req = NSURLRequest(URL:url)
self.webView!.loadRequest(req)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Run Code Online (Sandbox Code Playgroud) 我在Delphi XE8中有一个类的以下声明:
TestClass = class;
TestClass = class
function test<T: TestClass>(supplier: TFunc<T>): T; // Compiler error
end;
Run Code Online (Sandbox Code Playgroud)
这会抛出以下编译器错误:
E2086 Type 'TestClass' is not yet completely defined
Run Code Online (Sandbox Code Playgroud)
当我在混合中添加另一个类并将其作为约束使用时,它可以正常工作:
AnotherTestClass = class
end;
TestClass = class;
TestClass = class
function test<T: AnotherTestClass>(supplier: TFunc<T>): T; // No Error
end;
Run Code Online (Sandbox Code Playgroud)
我怀疑问题是前向类型声明没有告诉Delphi足够的TestClass类型.这可能更明显,因为以下尝试解决该问题会在不同的行上抛出相同的编译器错误:
TestClass = class;
AnotherTestClass = class (TestClass) // Compiler Error
end;
TestClass = class
function test<T: AnotherTestClass>(supplier: TFunc<T>): T;
end;
Run Code Online (Sandbox Code Playgroud)
我做错了什么,如果没有,是否有解决这个问题的方法?
delphi generics forward-declaration type-constraints delphi-xe8
我正在使用领域来保存我的数据.我的问题是,我想有对象了一些小的,临时的变化,我不希望这些变化在我的存储对象的反映,但境界并不让我改变检索到的对象的属性没有写入块,最终导致保存我在数据库中的临时更改.我不能通过创建新对象和分配值来创建对象的副本,因为我有大数据集.
有没有简单的解决方案来实现这一目标?
我有一个应用程序,您应该可以使用我将在此问题中发布的代码完全且非常轻松地重新创建.这是清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.broadcasttest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.broadcasttest.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name="com.example.broadcasttest.TestReceiver"
android:label="@string/app_name"
android:enabled="true" >
</receiver>
<intentservice
android:name="com.example.broadcasttest.MonitorService"
android:enabled="true" >
<intent-filter>
<action android:name="com.example.broadcasttest.MonitorService" />
</intent-filter>
</intentservice>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
如您所见,它包含一个活动,一个(唤醒)广播接收器和一个intentservice,都在同一个包中.活动在启动时开始,这是代码:
package com.example.broadcasttest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); …Run Code Online (Sandbox Code Playgroud) 我正在使用自定义表单的一个相当大的项目中工作,我想自己绘制这些表单的非客户区域。我不能使用vcl样式,因为许多表格需要在运行时选择带有颜色的标题栏和边框,据我所知,样式在设计上是广泛应用的。
到目前为止,我已经完成的工作是绘制标题栏和边框,绘制标题,禁用最小化,最大化和关闭按钮,并用我自己的按钮替换。我通过截获WM_NCPaint和WM_NCACTIVATE消息,并在处理WM_NCACTIVATE并在不处理WM_NCPAINT消息的情况下发送WM_ACTIVATE消息的情况下在继承的关键字之后调用我自己的过程来实现此目的:
SendMessage(Handle, WM_NCACTIVATE, ORD(active), -1);
Run Code Online (Sandbox Code Playgroud)
之所以这样做,是因为我无法使TMainMenu始终如一地绘制自身,在逐步执行代码之后,似乎正在正确处理的WM_NCACTIVATE消息可以绘制主菜单。我尝试过的另一种方法是在主菜单上调用UpdateItems,但这没有产生任何结果。
我通过这样处理WM_NCHITTEST消息来停用右上角的按钮:
procedure TBasicForm.WMNCHITTEST(var message : TMessage);
begin
inherited;
case message.Result of
HTMINBUTTONE, HTMAXBUTTON, HTCLOSE: message.Result := HTCAPTION;
end;
end;
Run Code Online (Sandbox Code Playgroud)
我通过处理WM_NCLBUTTONDOWN得到了自己的按钮(在处理WM_NCACTIVATE时在我调用的过程中绘制),这不是一个完美的解决方案,但可以轻松进行改进。(我相信我不需要对此进行详细说明。
到目前为止,这听起来还不错。
直接的问题是,我该如何解决这三个问题?但是,可能是我完全采用了错误的方式,在这种情况下,问题是,如何实现自定义绘制的标题栏和边框,最好不要过多地使用边框和标题栏的功能,并且正确绘制主菜单?
正如我所说的,这是一个包含许多表单的相当大的项目,因此在表单设计器中进行更改是我考虑要做的最后一件事。
要重现我遇到的问题,请创建一个新表格并处理WM_NCHITTEST,WM_NCACTIVATE和WM_NCPAINT,如我之前所述。
...
procedure WMNCHITTEST(var message : TMessage); message WM_NCHITTEST;
procedure WMNCACTIVATE(var message : TMessage); message WM_NCACTIVATE;
procedure WMNCPAINT(var message : TMessage); message WM_NCPAINT;
...
implementation
...
procedure TBasicForm.WMNCHITTEST(var message : TMessage);
begin
inherited;
case message.Result of
HTMINBUTTONE, HTMAXBUTTON, HTCLOSE: message.Result := HTCAPTION;
end; …Run Code Online (Sandbox Code Playgroud) 我是在一个相当大的应用程序中自定义绘制我的标题栏,有许多表单,并且决定尝试通过自己处理一些消息并在我处理WM_NCPAINT时填写绘图的老式方法.
这幅画本身很顺利,基本上是有效的.有一件事是行不通的是绘制TMainMenu.要么我有默认的WM_NCACTIVATE处理程序绘制整个非客户区域(我必须在我的WM_NCPAINT处理程序中执行WM_NCACTIVATE消息),然后再绘制它,这会导致看似无法帮助的闪烁.或者我可以尝试让WM_NCPAINT的默认处理程序仅绘制包含TMainMenu的Rect,这会产生平滑的结果,但不会重新绘制菜单.
我的问题是:
我已经给了它一些去,我想我是在正确的方式,但我撞到了一堵墙; 我对我正在做的事情知之甚少,似乎无法找到关于它的明确文档.我的代码中最重要的部分是:
RedrawWindow(Handle, nil, MenuRegion, RDW_INVALIDATE or RDW_FRAME or RDW_NOERASE or RDW_ALLCHILDREN or RDW_UPDATENOW);
Run Code Online (Sandbox Code Playgroud)
而且我认为这正是出了什么问题.(或者更确切地说,我计算'MenuRegion'的代码.我只是不知道是否出错,因为我使用了错误的坐标系,或者是因为我这样做完全是错误的.
这是我的代码的简化版本,它将在delphi(xe3)中"按原样"编译和运行:
unit Unit3;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus;
type
TForm3 = class(TForm)
private
FDrawMenu: Boolean;
function CalcFrameRegion: HRGN;
function CalcMenuRegion: HRGN;
procedure DrawMenu;
procedure FormFrame(minimal: Boolean = false);
procedure WMNCActivate(var message: TWMNCActivate); message WM_NCACTIVATE;
procedure WMNCPaint(var message: TMessage); message WM_NCPAINT;
procedure WMSIZE(var message : TWMSIZE); message WM_SIZE;
constructor Create(AOwner: TComponent); override;
public
{ Public …Run Code Online (Sandbox Code Playgroud) 我想建立一本字典的字典。在 Swift 中,如何声明一个具有字符串键和相同类型字典值的字典?我需要能够拥有无限的巢穴。(有点像使用节点构建树。只不过它不是树,而是字典。)
我尝试使用 AnyObject,但出现转换错误:
var node1: Dictionary<String, AnyObject?> = ["foo" : nil]
var node2: Dictionary<String, AnyObject?> = ["bar" : node1] // ERROR: Cannot convert value of type 'Dictionary<String, AnyObject?>' (aka 'Dictionary<String, Optional<AnyObject>>') to expected dictionary value type 'Optional<AnyObject>'
Run Code Online (Sandbox Code Playgroud)
是否有类型安全的方法来执行此操作(即不使用 AnyObject?)
swift ×4
delphi ×3
android ×2
delphi-xe3 ×2
ios ×2
vcl ×2
arrays ×1
build.gradle ×1
debugging ×1
delphi-xe8 ×1
dictionary ×1
generics ×1
gradle ×1
ios8 ×1
java ×1
javascript ×1
nested ×1
realm ×1
titlebar ×1
wkwebview ×1