活动不得与应用程序快捷方式的任何其他活动相互依赖?

时间:2016-12-02 09:48:44

标签: android android-7.0-nougat android-7.1-nougat android-appshortcut

我正在我的应用程序中实现应用程序快捷方式。当我尝试打开我的快捷方式时,它打开正常但在搜索功能期间它崩溃了 崩溃报告显示了一个SQLiteexception,因为我从数据库中获取数据 所以我的问题是应用程序快捷方式应该与其他文件无关吗?

array

通过应用程序打开时它可以正常工作

我创建应用快捷方式的代码是

    01-28 15:25:51.784 12166-12166/ E/AndroidRuntime: FATAL EXCEPTION: main
                                                          Process: , PID: 12166
                                                          android.database.sqlite.SQLiteException: no such table: temp (code 1): , while compiling: SELECT empID, name, firstName, lastName, email, mobile, designation, location, extension FROM temp WHERE name LIKE ?
                                                              at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                                                              at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
                                                              at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
                                                              at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
                                                              at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
                                                              at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
                                                              at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
                                                              at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1318)
                                                              at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1165)
                                                              at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1036)
                                                              at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1204)
                                                              at com.thbs.database.EmployeeDbAdapter.search(EmployeeDbAdapter.java:194)
                                                              at com.thbs.activity.SearchActivity$3.onTextChanged(SearchActivity.java:306)
                                                              at android.widget.TextView.sendOnTextChanged(TextView.java:8187)
                                                              at android.widget.TextView.handleTextChanged(TextView.java:8249)
                                                              at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:10371)
                                                              at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:1208)
                                                              at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:578)
                                                              at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:509)
                                                              at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:508)
                                                              at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:844)
                                                              at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:198)
                                                              at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:183)
                                                              at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:353)
                                                              at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:93)
                                                              at android.os.Handler.dispatchMessage(Handler.java:102)
                                                              at android.os.Looper.loop(Looper.java:154)
                                                              at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                              at java.lang.reflect.Method.invoke(Native Method)
                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

1 个答案:

答案 0 :(得分:0)

最有可能的是,您的问题与应用程序快捷方式无关。在实验中,将<intent-filter> / MAIN的{​​{1}}添加到LAUNCHER,以便您的应用现在有两个启动器图标。直接从主屏幕启动SearchActivity。最有可能的是,你会遇到同样的崩溃。

我的猜测是SearchActivity - 也许是SearchActivity - 假设用户总是经历您的启动器活动,以便您的数据库处于某种状态。情况并非总是如此。应用程序快捷方式不仅会导致此问题,而且其他方面也会如此。例如:

  • 用户通过启动器活动输入您的应用
  • 用户可以访问LeaveManagerActivity
  • 用户按HOME
  • 10分钟过去,在此期间Android终止您的进程以释放系统RAM
  • 用户返回您的应用程序(主屏幕启动器图标,概览屏幕/最近任务列表等)

此时,Android将创建SearchActivity的实例并将用户发送到那里,因为用户最近才进行此任务。与您的应用快捷方式一样,用户可以在SearchActivity中结束,而无需在当前流程的生命周期内访问启动器活动。

活动要么必须独立于所有其他活动,要么需要了解它们的依赖关系,并且能够应对何时不满足这些依赖关系(例如,将用户重定向回启动器活动)。