我想使用新的Multidex支持库来打破我的某个应用程序的方法限制.
借助Android Lollipop,Google推出了一个multidex支持库,可以轻松实现多索引.
使用此库需要哪些步骤以及使用multidex支持构建我的应用程序?
我们都知道Android Activity的生命周期和Fragment的生命周期.但是有没有相同的观点?
例如,这可以帮助构建自定义视图或深入了解Android上非常常见且经常隐藏的图形操作.
提前致谢 !
我正在我的应用程序上尝试新的MultiDex支持,到目前为止我已经设法正确编译我的应用程序,但在运行它时,我得到以下异常:
java.lang.RuntimeException: Unable to instantiate application android.support.multidex.MultiDexApplication: java.lang.ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication" on path: DexPathList[[zip file "/data/app/me.myapp.main-2.apk"],nativeLibraryDirectories=[/data/app-lib/me..main-2, /vendor/lib, /system/lib]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:507)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4382)
at android.app.ActivityThread.access$1500(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1270)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication" on path: DexPathList[[zip file "/data/app/me.myapp.main-2.apk"],nativeLibraryDirectories=[/data/app-lib/me.myapp.main-2, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at android.app.Instrumentation.newApplication(Instrumentation.java:998)
at android.app.LoadedApk.makeApplication(LoadedApk.java:502)
Run Code Online (Sandbox Code Playgroud)
这是我的gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion …Run Code Online (Sandbox Code Playgroud) 在许多应用程序中,我看到有一个欢迎屏幕或教程,通过在活动之上叠加解释来解释应用程序的工作原理.例如,在Android本身,欢迎屏幕"让自己回家".
我想知道可以使用哪些技术.
编辑:"让自己回家吧"的截图

是否有任何方法可以通过命令行启动并通过命令avd注册adb?
我也希望让模拟器无头启动.
我正在寻找这个快速运行测试.
我习惯使用适配器在android中构建列表.如果我需要一些长期获取的数据,我使用asynctask或简单的runnable来更新适配器所依赖的数据结构,并在适配器上调用notifyDataChanged.
虽然它并不简单,但我终于发现这是一个简单的模型,它允许逻辑表示(在asynctask中,更新数据结构)和视图(主要用作视图工厂的适配器)的良好分离.
不过,我最近读到了关于HoneyComb中引入的加载器并包含在向后兼容性支持库中,我尝试了它们并发现引入了很多复杂性.它们很难处理并通过装载程序管理器为整个过程添加某种魔力,添加大量代码并且不减少类或协作项目的数量,但我可能错了,并希望听到一些关于装载机.
好的,这是一个开发者论坛,所以这是一个例子.请用装载机做得更好:
package com.sof.test.loader;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.TextView;
/** The activity. */
public class LoaderTestActivity extends ListActivity {
private DataSourceOrDomainModel dataSourceOrDomainModel = new DataSourceOrDomainModel();
private List<Person> listPerson;
private PersonListAdapter personListAdapter;
private TextView emptyView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listPerson = new ArrayList<Person>();
personListAdapter = new PersonListAdapter( listPerson ); …Run Code Online (Sandbox Code Playgroud) android list android-3.0-honeycomb android-4.0-ice-cream-sandwich
在我们的一个方法中,我们在列表视图中使用smoothScrolling.由于此方法在API Level 8(FROYO)之前不可用,因此我们使用TargetApi注释来防止在以前的SDK版本中调用该方法.
如您所见,我们在类定义和使用类对象的语句中都使用TargetApi注释.这不仅仅是需要的.
我们的问题是没有考虑TargetApi注释并使我们的模拟器在版本ECLAIR(SDK 7)中崩溃.通过跟踪,我们只是意识到应该只在版本8+中执行的代码也在版本7中执行.
我们错过了什么吗?
这段代码在听众中:
@TargetApi(8)
private final class MyOnMenuExpandListener implements OnMenuExpandListener {
@Override
public void onMenuExpanded( int position ) {
doScrollIfNeeded( position );
}
@Override
public void onMenuCollapsed( int position ) {
doScrollIfNeeded( position );
}
protected void doScrollIfNeeded( int position ) {
if ( mListViewDocuments.getLastVisiblePosition() - 2 < position ) {
mListViewDocuments.smoothScrollToPosition( position + 1 );
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且监听器以这种方式注册:
@TargetApi(8)
private void allowSmothScrollIfSupported() {
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO ) {
//This …Run Code Online (Sandbox Code Playgroud) 尝试在我的应用程序中使用MultiDexApplication,但是当我尝试使用它扩展应用程序活动时,无法识别该类.
这是我的build.gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion '21.0.1'
defaultConfig {
applicationId 'com.myapp'
minSdkVersion 10
targetSdkVersion 21
versionCode 115
versionName '4.8'
}
buildTypes {
debug {
debuggable true
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
debuggable false
runProguard true
zipAlign true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
lintOptions {
checkReleaseBuilds false
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.gms:play-services:6.1.11'
compile 'com.android.support:appcompat-v7:21.0.0'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.viewpagerindicator:library:2.4.1@aar'
compile project(':facebook')
} …Run Code Online (Sandbox Code Playgroud) 在我们的应用中,我们希望出现在"分享通过"菜单中.所以我们在我们的活动中添加了这个intent-filter:
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/*" />
<data android:mimeType="audio/*" />
<data android:mimeType="image/*" />
<data android:mimeType="text/*" />
<data android:mimeType="video/*" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
它工作正常,我们的应用程序出现在共享菜单中.
然而,意图过滤器并不完全符合我们想要的目标:
对于所有文件和仅文件,正确的intent-filter会是什么?
提前致谢.
我们尝试添加scheme = file和host =""或"*",并且它不起作用,因为许多app使用scheme = content来共享基于文件的内容.
我有一个使用ORMLite的应用程序.我需要创建一个函数来重置整个数据库(基本上我需要删除每个数据库中的所有行,重置自动增量和重置索引).
我可能可以通过在每个表上启动截断来实现这一点,但ORMLite是否有一些特定的方法来执行此操作?
android ×10
gradle ×3
android-4.0-ice-cream-sandwich ×1
annotations ×1
command-line ×1
dex ×1
emulation ×1
genymotion ×1
intentfilter ×1
lifecycle ×1
list ×1
ormlite ×1
overlay ×1
share ×1
showcaseview ×1
view ×1