java - Android在Service类中使用数据库

标签 java android database service

我想在我的服务类中使用数据库,但我的应用程序崩溃了 我真的不知道为什么 我的数据库在另一项 Activity 中运行良好 我认为这是因为我的 corsur

   08-13 11:54:18.244: E/jdwp(2898):                Failed sending reply to debugger: Broken pipe
08-13 11:54:18.540: E/AndroidRuntime(2927):     FATAL EXCEPTION: main
08-13 11:54:18.540: E/AndroidRuntime(2927):     java.lang.RuntimeException: Unable to create service arad.faleroozane.MyService: java.lang.ArrayIndexOutOfBoundsException: length=0; index=-1
08-13 11:54:18.540: E/AndroidRuntime(2927):     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2539)
08-13 11:54:18.540: E/AndroidRuntime(2927):     at android.app.ActivityThread.access$1600(ActivityThread.java:141)
08-13 11:54:18.540: E/AndroidRuntime(2927):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
08-13 11:54:18.540: E/AndroidRuntime(2927):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-13 11:54:18.540: E/AndroidRuntime(2927):     at android.os.Looper.loop(Looper.java:137)
08-13 11:54:18.540: E/AndroidRuntime(2927):     at android.app.ActivityThread.main(ActivityThread.java:5041)
08-13 11:54:18.540: E/AndroidRuntime(2927):     at java.lang.reflect.Method.invokeNative(Native Method)
08-13 11:54:18.540: E/AndroidRuntime(2927):     at java.lang.reflect.Method.invoke(Method.java:511)
08-13 11:54:18.540: E/AndroidRuntime(2927):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-13 11:54:18.540: E/AndroidRuntime(2927):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-13 11:54:18.540: E/AndroidRuntime(2927):     at dalvik.system.NativeStart.main(Native Method)
08-13 11:54:18.540: E/AndroidRuntime(2927):     Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=-1
08-13 11:54:18.540: E/AndroidRuntime(2927):     at java.util.ArrayList.get(ArrayList.java:306)
08-13 11:54:18.540: E/AndroidRuntime(2927):     at arad.faleroozane.Database.showfal(Database.java:161)
08-13 11:54:18.540: E/AndroidRuntime(2927):     at arad.faleroozane.MyService.onCreate(MyService.java:70)
08-13 11:54:18.540: E/AndroidRuntime(2927):     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2529)
08-13 11:54:18.540: E/AndroidRuntime(2927):     ... 10 more
08-13 11:59:18.648: E/InputDispatcher(476):     channel '534822c0 arad.faleroozane/arad.faleroozane.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!

这是我在数据库类中的代码: 我的数组列表在另一项 Activity 中表现良好,它更强大:

    public void showfal() {

    G.todaydate = new SimpleDateFormat("yyy-MM-dd").format(new Date());
    String today = G.todaydate;
    Cursor cu = mydb.rawQuery("SELECT * FROM fal WHERE startdate like  '%" + today + "" + "%'  order by id ", null);

    while (cu != null && cu.moveToNext()) {

        G.farvardin.add(cu.getString(cu.getColumnIndex("farvardin")) + "");
        G.ordibehesht.add(cu.getString(cu.getColumnIndex("ordibehesht")) + "");
        G.khordad.add(cu.getString(cu.getColumnIndex("khordad")) + "");
        G.tir.add(cu.getString(cu.getColumnIndex("tir")) + "");
        G.mordad.add(cu.getString(cu.getColumnIndex("mordad")) + "");
        G.shahrivar.add(cu.getString(cu.getColumnIndex("shahrivar")) + "");
        G.mehr.add(cu.getString(cu.getColumnIndex("mehr")) + "");
        G.aban.add(cu.getString(cu.getColumnIndex("aban")) + "");
        G.azar.add(cu.getString(cu.getColumnIndex("azar")) + "");
        G.dey.add(cu.getString(cu.getColumnIndex("dey")) + "");
        G.bahman.add(cu.getString(cu.getColumnIndex("bahman")) + "");
        G.esfand.add(cu.getString(cu.getColumnIndex("esfand")) + "");

    }

    G.far = G.farvardin.get(G.farvardin.size() - 1);
    G.ord = G.ordibehesht.get(G.ordibehesht.size() - 1);
    G.kho = G.khordad.get(G.khordad.size() - 1);
    G.tirr = G.tir.get(G.tir.size() - 1);
    G.mor = G.mordad.get(G.mordad.size() - 1);
    G.sha = G.shahrivar.get(G.shahrivar.size() - 1);
    G.meh = G.mehr.get(G.mehr.size() - 1);
    G.aba = G.aban.get(G.aban.size() - 1);
    G.aza = G.azar.get(G.azar.size() - 1);
    G.deyy = G.dey.get(G.dey.size() - 1);
    G.bah = G.bahman.get(G.bahman.size() - 1);
    G.esf = G.esfand.get(G.esfand.size() - 1);

    cu.close();
}

最佳答案

Hadi 因为你还没有上传你的代码所以不可能清楚地回答你的问题但是会尽力帮助你。

The exception is saying that in your service your are using Array/ArrayList and the index you are trying to access is greater then the size of your array. Exception is telling that your array is of size 0 and the index.

好吧,通过查看您的代码,您在下面的行中遇到了错误

G.far = G.farvardin.get(G.farvardin.size() - 1);

原因是 G.farvardin.size() 的大小为 0,所以 0-1=-1 这就是您对数组进行异常检查的原因。

关于java - Android在Service类中使用数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31982253/

相关文章:

java - Android:SharedPreferences 未从 PreferenceFragment 更新

php - 使用 CA 文件从 Azure Database for MySQL 进行 SSL 连接

java - 根据指定列动态查询

java - 第三方库的新版本怎么样?

java - 如何将捕获的异常与java中的标准异常进行比较

java - 带微秒的 log4j ConversionPattern 时间戳

android - Gradle 不会自动将 jar 添加到项目中

android - 收到错误的android google play安装Referrer

.net - 适合特定情况的最佳基础设施

mysql - DBD 基本身份验证 Apache 2.2